TGViewer
PHP Portal | Программирование PHP Portal | Программирование @phpgx · 4.64K subscribers
Post #174 3.33K
Как генерировать случайные числа в 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 | #заметки
  • 👍 18
  • ❤ 1
More from @phpgx
  1. Sep 21, 2026Совет по Laravel Все исходящие HTTP-ответы можно обрабатывать в одном месте с помощью Http…
  2. Sep 11, 2026Laravel tip Нужно получить все записи, кроме последних 5? skip() сам по себе игнорируется,…
  3. Sep 7, 2026В Laravel 13.30 появился удобный метод для Collection Использовали chunkWhile(), чтобы про…
  4. Sep 7, 2026PHP-совет В числовых литералах можно использовать подчёркивания, чтобы визуально группиров…
  5. Sep 2, 2026Он не из наших 👉 @PHPgx
  6. Aug 26, 2026TypePHP вышел в open source раньше запланированного 🎉 Изначально релиз исходников был нам…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →