Здравствуйте! Задача - формирование строки состоящей и трех случайных чисел, выбранных в заданном промежутке. Вроде чего-то там понаписал, но иногда вместо 3 формируется 2 или 4 числа в строке! Ошибка скорее всего где-то в логике, сижу туплю понять не могу. Вот собственно что есть: PHP: $random_id_array = array(); for ($i=1; $i<=3; $i++) { $random_num = rand (2,12); array_push ($random_id_array,$random_num); } $random_id_array = array_unique($random_id_array); $count = count($random_id_array); if ($count<3) { $skolko_nado= 3 - $count; for ($i=0; $i<=$skolko_nado; $i++) { $random_num = rand (2,12); array_push ($random_id_array,$random_num); $random_id_array = array_unique($random_id_array); } } $random_id_str = implode(",",$random_id_array); echo $random_id_str; Хочу отметить, что написанно не оптимально, если кто поможет буду признателен! Заранее спасибо!
oO echo mt_rand(100, 999); Или implode(",", str_split(mt_rand(100, 999))); Или $number = (string)mt_rand(100, 999); echo $number[0],',',$number[1],',',$number[2];
Спасибо... Где гарантия что числа из заданного промежутка будут уникальны(ОЧЕНЬ важно ), т.е все три числа разные!!!
PHP: <?php $a=rand(0,9); $b=rand(0,9); if($a==$b) { while($a==$b) { $b=rand(0,9); } } $c=rand(0,9); if(($c==$b) or ($c==$a)) { while (($c==$b) and ($c==$a)) { $c=rand(0,9); } } $d=$a.$b.$c; print $d; ?> идеотизм конечно но должно работать зы: как or и and в условии делать точно не помню
Могу ошибаться, но мне кажется, что достаточно сид менять. А вариантов может быть выше крыши: PHP: <?php $numbers= array_fill(0, 9 , true); $rand_keys = array_rand($numbers, 3); echo implode(",", $rand_keys); PHP: $string = str_shuffle("0123456789"); echo $string[0],',',$string[1],',',$string[2];