Я думаю, вы обнаружите, что rand()%9
даст вам число в диапазоне от 0 до 8 включительно. Если вы хотите от 0 до 9 включительно, вы должны использовать rand()%10
. Я собираюсь предположить, что это то, что вы хотели, но вы могли бы легко скорректировать ответ, если от 0 до 8 было тем, что вы действительно намеревались.
Если вам нужно два числа в этом диапазоне, самый простой способ - сгенерировать одно в этом диапазоне, затем сгенерировать другое на одно число меньше этого диапазона и, если оно идентично или больше, увеличить его.
Это математический способ сделать это, и он детерминирован ( всегда два вызова rand()
, несмотря ни на что). Хотя маловероятно, что настоящий генератор случайных чисел мог бы создать строку идентичных чисел, что сделало бы неразумными решения зацикливания (вы, вероятно, будете использовать линейный генератор, так что это, вероятно, не будет проблемой).
С первой попытки у вас есть полный диапазон на выбор (10 номеров, от 0 до 9). На втором у вас есть полный диапазон минус уже выбранное число. Итак, если ваше первое число было 7, вы генерируете число от 0 до 8 и карту 7 до 8 и от 8 до 9:
$random1 = (rand() % 10);
$random2 = (rand() % 9);
if $random2 >= $random1 {
$random2 = $random2 + 1;
}