Страница 1 из 2

Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 06:19
aydar
привет. :)
Как сделать чтобы генератор не выдавал одинаковых чисел?
мне нужно 25 чисел, из рандома (уникальных!) (я знаю как сделать, но чет хромает(хромает тем что все равно выдает от 1-3 одинаковых, (это когда 25 чисел, а при например 5, все отлично))).
Делаю так:

Код: Выделить всё

 //первое число$first = mt_rand(1,100); //рандомим //второе число$second = mt_rand(1,100); //рандомимif($first=$second)    //Смотрим, если первое число совпадает со вторым, то рандомим дальше {$second = mt_rand(1,100);} //третье число$thirth = mt_rand(1,100); //рандомимif($thirth=$first or $thirth=$second)    //Смотрим, если число совпадает с первым или со вторым, то рандомим дальше {$thirth = mt_rand(1,100);}.....(аналогично другие)echo $first, $second, $thirth......; //выводим числа 
:geek:

Re: Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 07:15
Noise Gate
тебе именно от 1 до 100 надо?

Re: Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 11:40
bodnar
ну ты извращенец :lol:

Код: Выделить всё

 for ($i=0; $i<100; $i++){$array[]=mt_rand(1,100);}   for ($i=1; $i<100;$i++){p=true;while (p){$p=false;for ($j=0; $j<$i;$j++){if ($array[$i]==$array[$j]){$i=mt_rand(1,100); $p = true;}}}}  
как то так должно работать, проверять лень))

Re: Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 12:28
Noise Gate
можно еще проще:

Код: Выделить всё

do {    mt_srand();    $random_array[mt_rand(1, 100)] = 1;} while (count($random_array) < 25);
На выходе получим массив, у которого ключи и будут необходимыми рандомными числами:
http://codepad.org/LRe0VaeJ

Re: Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 12:44
bodnar
оу еее, крутой метод :-)

Re: Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 12:50
Noise Gate
bodnar
обращайся =) в PHP у меня большой опыт)

Re: Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 13:10
Doker
Как сделать чтобы редомно выбиралось из заведомо указаных чисел например:
Нужено выбрать и чисел 200,159,589,41,326,1,65 одно число. Рендомно. Как это реализовать? В пхп не шарю =(

Re: Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 13:14
Noise Gate

Код: Выделить всё

$random_array = array(200,159,589,41,326,1,65);shuffle($random_array);$random_number = $random_array[0];
или для пущей рандомности:

Код: Выделить всё

$random_number = $random_array[mt_rand(0, count($random_array))];

Re: Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 14:54
aydar
Спасибо :!:
Подскажите еще пожалуйста, как например первое значение, присвоить переменной (напрмер)
$first = 'первое сгенерированное' ;

Re: Уникальный рандом(rand_mt)

Добавлено: 06 окт 2010, 15:41
Noise Gate
Надо "обратить" массив и взять необходимые значения:

Код: Выделить всё

$tmp_array = array_keys($random_array);$first = $tmp_array[0];$second = $tmp_array[1];...