Спустя 2 минуты, 20 секунд (15.11.2010 - 10:18) twin написал(а):
подробнее. вообще неповторяющиеся или в рамках одного запуска скрипта?
Спустя 6 минут, 44 секунды (15.11.2010 - 10:24) kirik написал(а):
quickxyan
радндом - он на то и рандом, что ты не знаешь какое число будет следующее. А если ты на этот процесс как-то влияешь - это уже не рандом.
радндом - он на то и рандом, что ты не знаешь какое число будет следующее. А если ты на этот процесс как-то влияешь - это уже не рандом.
Спустя 3 минуты, 7 секунд (15.11.2010 - 10:28) Йакуд написал(а):
Есть формула для генерации псевдослучайной последовательности.
Где a, m и x[0] могут принимать произвольные целые значения, за исключением 0. C может быть также и 0.
Можно написать класс или функцию для генерации такой последовательности.
P.S.
Такие последовательности очень удобно применять, к примеру, в онлайн играх. Где нужно на сервере и клиенте одновременно генерировать что-либо. Будь то расположение деревьев на локации или путь ИИ от одной до другой точки. Все это можно сделать без лишней передачи данных.
x[n+1] = (a * x[n] + c) mod m;
Где a, m и x[0] могут принимать произвольные целые значения, за исключением 0. C может быть также и 0.
Можно написать класс или функцию для генерации такой последовательности.
P.S.
Такие последовательности очень удобно применять, к примеру, в онлайн играх. Где нужно на сервере и клиенте одновременно генерировать что-либо. Будь то расположение деревьев на локации или путь ИИ от одной до другой точки. Все это можно сделать без лишней передачи данных.
Спустя 23 минуты, 25 секунд (15.11.2010 - 10:51) quickxyan написал(а):
один запуск скрипта! я хотел выложить кусок кода, но щас шото голова непашет)
надо масив чисел из 10 элементов заполнить числами от 1 до 10 в разброс!
2 Йакуд - нужны рамки от такого то числа - по такое то! например: 1-10
надо масив чисел из 10 элементов заполнить числами от 1 до 10 в разброс!
2 Йакуд - нужны рамки от такого то числа - по такое то! например: 1-10
Спустя 12 минут, 46 секунд (15.11.2010 - 11:04) Йакуд написал(а):
quickxyan, сказал бы сразу, что тебе нужно. А то я тут уже собрался класс писать для генерации последовательностей.
Твою задачу можно решить очень просто.
Твою задачу можно решить очень просто.
<?
/*
* Твой массив, в который попадут случайные числа
*/
$array = array();
for($i = 0; $i < 10; $i ++){
$rnd = rand()%10+1;
$in_array = 1;
while($in_array){
if(!in_array($rnd, $array)){
$array[] = $rnd;
$in_array = 0;
}else{
$rnd = rand()%10+1;
}
}
}
/*
* Рисуем массив.
*/
?><pre><?
print_r($array);
?></pre>
Спустя 36 минут, 10 секунд (15.11.2010 - 11:40) quickxyan написал(а):
спасибо большое! работает! правда щас в код углубляться не буду так как уже говорил, что-то не думаеться)
Спустя 10 минут, 45 секунд (15.11.2010 - 11:51) Йакуд написал(а):
/*
* Твой массив, в который попадут случайные числа
*/
$array = array();
//Цикл
for($i = 0; $i < 10; $i ++){
//Генерация случайного числа от 1 до 10
$rnd = rand()%10+1;
$in_array = 1;
//Выполнять код в теле функции, пока $in_array == 1
while($in_array){
//Если сгенерированное число не в массиве
if(!in_array($rnd, $array)){
//Добавляем число
$array[] = $rnd;
//Останавливаем цикл
$in_array = 0;
}else{//Если число в массиве
//Генерируем новое
$rnd = rand()%10+1;
}
}
}
Откомментил тебе код. Если помог, можешь плюсануть ^_^..
Спустя 57 минут, 24 секунды (15.11.2010 - 12:48) twin написал(а):
Вот это тот случай, когда do... while был бы уместен:
Первые 10 никогда не повторятся.
function getRandom()
{
static $tmp = array();
do
{
$num = rand(1, 10);
}
while(count($tmp) < 10 && in_array($num, $tmp));
$tmp[] = $num;
return $num;
}
echo getRandom();
echo getRandom();
echo getRandom();
Первые 10 никогда не повторятся.
Спустя 4 часа, 37 минут, 38 секунд (15.11.2010 - 17:26) quickxyan написал(а):
Йакуд, спасибо за коменты, а то я кое-что хотел спросить, а тут оп и все описано
и еще, я тоже задумывался над таким способом, но когда сел реализовывать, то запутался и забил(
twin, тоже спасибо все работает и все предельно ясно)
Думаю на этом тему можно какбэ закрыть)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
и еще, я тоже задумывался над таким способом, но когда сел реализовывать, то запутался и забил(
twin, тоже спасибо все работает и все предельно ясно)
Думаю на этом тему можно какбэ закрыть)
Спустя 3 часа, 49 минут, 5 секунд (15.11.2010 - 21:15) kirik написал(а):
Цитата (quickxyan @ 15.11.2010 - 02:51) |
надо масив чисел из 10 элементов заполнить числами от 1 до 10 в разброс! |
Цитата (Йакуд @ 15.11.2010 - 03:04) |
Твою задачу можно решить очень просто. |
Мьсьё знает толк в извращениях :)
$array = range(1,10);
shuffle($array);
print_r($array);
_____________
печатаю со скоростью 320 минут в знак...
плюсуем карму не стесняемся