вопрос.. можно например чтоб у меня выводилось случайное число от 0 до 9 но кроме 3-ки например ? Код (Text): rand(0,9);
ога.. спс.. а вот если так.. например 3-ка будет не постоянной... тоесть один раз запустил скрипт.. 3-ку не выдаст, 2 раз запустил. 4-ку не выдаст или 9 ... тоесть число которое не выдаст будет тоже рандомом !
PHP: <? while (!isset($num) || $num == 3) { $num = mt_rand(0, 9); } ?> То? upd: не понял, щас напишу нормальный ответ.
PHP: <? $num = $not_me = mt_rand(0, 9); while ($num == $not_me) { $num = mt_rand(0, 9); } ?> Так, что ли?
PHP: <? $not_me = mt_rand(0, 9); $nums = range(0, 9); unset($nums[$not_me]); echo array_rand($nums); ?> [vs], них не понял, видимо я тупой.
вообщем расскажу по подробней,.. есть 4-х значное число.. которое форируеться рандомом... каждая цифра формируеться отдельно.. это лотерея. и по этому надо чтоб при формировании цифры.. какая-то одна не выдавалась... а чтоб не было палева.. надо чтоб не выдавалась всё время разная ))
dazik Первый не разрешает тройке появляться, второй не разрешает случайно выбранному числу появляться.
вообщем... например число 2345 нужно например чтоб первая цифра не была 3. при ещё одном выполнении скрипта она не была 5 например !
Хорошо давайте сделаем по-человечески. Как я понял, надо 4 уникальных цифры? PHP: <?php function get_number() { $rand_array=array(); for($i=0;$i<4;$i++) { $rand=rand(0,9); if(in_array($rand,$rand_array)) { $i--; continue; } else { $rand_array[]=$rand; } } return implode($rand_array); } echo get_number(); ?>
[vs], если 4 уникальные цифры, то: PHP: <? echo join("", array_rand(range(0, 9), 4)); ?> Всё гениальное просто.
вообщем так.. начну с 0. есть лотерея.. человек покупает билет за 1 грн. билет представляет собой 4-х значное число которое формируетья рандомом. вот например куплено 100 билетов. выйгрыш вычисляеться следующим образом. например совпала одна цифра, стоящая в том-же порядке что и в билете.. например выйгрышный билет 2345 а мой билет 6396 - я выйграл.. если же совпадают 2 цифры.. так же стоящие в одном порядке с выйгрышными то 10 грн. если 3 цифры то 100 грн. а если 4 то джек пот.. так вот надо ессно сформировать такое выйгрышное число чтоб учасники как можно меньше выйграли... вот я и думаю.. значит просто не выдавать по одной цифре в билете.. это чтоб никогда не было джек-пота. но чтоб не было палева нужно эту цифру менять постояннло. вот и пока это единственное решение которое мне пришло.. может у кого-то есть ещё варианты ?
Первое что пришло в голову: PHP: <? // выйгрышный $winner = "2345"; // результат $res = ""; // номер цифры в выйгрышном билете, которое мы не покажем $pos = mt_rand(0, 3); // генерируем числа for ($i = 0; $i < 4; $i++) { // здесь нельзя показать число $winner[$pos] if ($i == $pos) { $nums = range(0, 9); unset($nums[(int) $winner[$pos]]); $res .= array_rand($nums); // покажем случайное } else { $res .= mt_rand(0, 9); } } echo $res ?> Джекпота быть не должно. PS: давайте жить и работать честно!
dazik Мммм коммерческй проект... я тебе накатаю систему расчетов с заданием самых разных параметров, если только предварительно поделишьсо
dazik Тебе нужны только циклы, условия, массивы и пара функций. Для красивости можно все это тоже одеть в функцию. Сложного кода там нет, там только логика.
dazik Тебе нужны только циклы, условия, массивы и пара функций. Для красивости можно все это тоже одеть в функцию. Сложного кода там нет, там только логика.
так я и пишу см.. просто были проблемы с рандомом.. вот и попросил помочь.. а вообще я всё решил по другому )))) вообще не так )) додумал сам ))