Как генерировать случайные числа в PHP: безопасно и эффективно



В PHP есть множество способов создать случайное число, но важно выбирать метод в зависимости от задачи. Давайте разберем основные подходы.



1️⃣ Для базовых задач: rand() и mt_rand()



Если вам нужно случайное число для простых сценариев, например, выбора победителя в игре, используйте:

$randomNumber = rand(1, 100); // Число от 1 до 100




Или его более быстрый аналог:

$randomNumber = mt_rand(1, 100);




⚠️ Предупреждение: Эти функции не подходят для криптографически безопасных операций, таких как генерация токенов или паролей.



2️⃣ Для безопасности: random_int()

Начиная с PHP 7, для безопасной генерации случайных чисел появился random_int():

$safeRandomNumber = random_int(1, 100);




🔸Эта функция использует криптографически безопасные источники энтропии.

🔸Рекомендуется для задач, где важно исключить предсказуемость (например, сессии, API-ключи).



3️⃣ Генерация взвешенных случайных чисел



Если вы хотите дать некоторым значениям больше шансов на выбор, воспользуйтесь алгоритмом взвешенной случайности. Например:

$options = ['A' => 1, 'B' => 2, 'C' => 3]; // Шансы: A - 1, B - 2, C - 3

$totalWeight = array_sum($options);



$random = random_int(1, $totalWeight);

foreach ($options as $key => $weight) {

if ($random <= $weight) {

echo "Выбрано: $key";

break;

}

$random -= $weight;

}




Вывод

🔸Используйте random_int() для критичных задач.

🔸Простые rand() или mt_rand() подойдут для игр и тестов.

🔸Добавьте взвешенность, если некоторым значениям нужно придать больший приоритет.



Генерируйте случайные числа правильно и безопасно! 🎹



👉 @PHPgx | #заметки