X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Случайные числа
BebeKa
BebeKa
Topic Starter сообщение 2.2.2010, 22:29; Ответить: BebeKa
Сообщение #1


Есть 21 чисел в массиве, нужно из этого массива вывести 15 чисел в хаотичном порядке ( rand() ).

У меня вышло вот что:

<?php
$num = 21;

$r = array();
for ($i = 0; $i <= $num; $i++) {
    $r[] = rand(1,$num);
}

$newArray = array();
for ($i = 0; $i < 15; $i++) {
    $randVal = $r[rand(1, $num)];
        if (!in_array($randVal, $newArray))
            array_push($newArray, $randVal);
        else
    $i--;
}

foreach($newArray as $id=>$val){
    echo($id . '. ' . $val . '<br>');
}
?>


У меня вышло, только оно так нагружает сервер Апач, что у меня ноут виснет. Можно сделать, это как-то по проще ?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
kronos
kronos
сообщение 2.2.2010, 22:32; Ответить: kronos
Сообщение #2


Используйте mt_rand


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BebeKa
BebeKa
Topic Starter сообщение 2.2.2010, 22:35; Ответить: BebeKa
Сообщение #3


(kronos @ 2.2.2010, 20:32) *
Используйте mt_rand


Можно по подробнее ? и как сделать, чтобы числа были разные ?то есть не совпадали.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
webpavilion
сообщение 2.2.2010, 23:22; Ответить: webpavilion
Сообщение #4


$num = 21;
$max = 15;
$r = array();

for($i=0;$i<=$num;$i++) $r[] = rand(1,$num);
$rand_keys = array_rand ($r, $max);
foreach ($rand_keys as $n => $v) echo $n, '. ', $v, '<br>';


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BebeKa
BebeKa
Topic Starter сообщение 2.2.2010, 23:43; Ответить: BebeKa
Сообщение #5


(webpavilion @ 2.2.2010, 21:22) *
$num = 21;
$max = 15;
$r = array();

for($i=0;$i<=$num;$i++) $r[] = rand(1,$num);
$rand_keys = array_rand ($r, $max);
foreach ($rand_keys as $n => $v) echo $n, '. ', $v, '<br>';


а как сделать, чтобы не было нулей ? то есть, числа начинались с единицы
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webpavilion
webpavilion
сообщение 2.2.2010, 23:59; Ответить: webpavilion
Сообщение #6


(BebeKa @ 2.2.2010, 22:43) *
а как сделать, чтобы не было нулей ? то есть, числа начинались с единицы

почитать о php не пробовали? говорят от нулей помогает.

$num = 21;
$max = 15;

for($i=1;$i!==$num;$i++) $r[$i] = mt_rand(1,$num);
$rand_keys = array_rand ($r, $max);
shuffle($rand_keys); #для большей рандромности
foreach ($rand_keys as $v) echo ++$n, '. ', $v, '<br>';


с mt_rand на треть быстрее работает.

Сообщение отредактировал webpavilion - 3.2.2010, 0:01


--------------------
Не ведитесь, cамопис это почти всегда плохо!

Делаю сайты на Drupal 7.x
(очень дорого)


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BebeKa
BebeKa
Topic Starter сообщение 3.2.2010, 0:12; Ответить: BebeKa
Сообщение #7


(webpavilion @ 2.2.2010, 21:59) *
почитать о php не пробовали? говорят от нулей помогает.

$num = 21;
$max = 15;

for($i=1;$i!==$num;$i++) $r[$i] = mt_rand(1,$num);
$rand_keys = array_rand ($r, $max);
shuffle($rand_keys); #для большей рандромности
foreach ($rand_keys as $v) echo ++$n, '. ', $v, '<br>';


с mt_rand на треть быстрее работает.


Спасибо большое! Да, думал почитать. Вот сегодня и начну.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Dmitry_K
Dmitry_K
сообщение 3.2.2010, 13:00; Ответить: Dmitry_K
Сообщение #8


Исппользуйте array_rand


--------------------
Качественная площадка (6/1400, 10 лет, экология) для размещения статей и ссылок.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BebeKa
BebeKa
Topic Starter сообщение 3.2.2010, 15:51; Ответить: BebeKa
Сообщение #9


(Dmitry_K @ 3.2.2010, 11:00) *
Исппользуйте array_rand

Спасибо) уже помогли мне)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Сделать в сайдбаре блок случайные новости
0 sergsam1 1531 4.10.2012, 19:13
автор: sergsam1


 



RSS Текстовая версия Сейчас: 25.4.2024, 7:33
Дизайн