Я пытаюсь создать функцию, которая генерирует случайное целое число из байтов, которые я получаю из / dev / urandom.Я делаю это в PHP, и в настоящее время это выглядит следующим образом:
public static function getRandomInteger($min, $max)
{
// First we need to determine how many bytes we need to construct $min-$max range.
$difference = $max-$min;
$bytesNeeded = ceil($difference/256);
$randomBytes = self::getRandomBytes($bytesNeeded);
// Let's sum up all bytes.
$sum = 0;
for ($a = 0; $a < $bytesNeeded; $a++)
$sum += ord($randomBytes[$a]);
// Make sure we don't push the limits.
$sum = $sum % ($difference);
return $sum + $min;
}
Все прекрасно работает, за исключением того, что я думаю, что это не рассчитать значения справедливоНапример, если вы хотите иметь случайное значение в диапазоне от 0 до 250, он получает один байт и изменяет его на 250, так что значения 0-6, скорее всего, появятся, чем значения 7-250.Что я должен сделать, чтобы это исправить?