Я пытаюсь генерировать случайные числа с плавающей точкой, используя только байты, которые я получаю из / dev / urandom. В настоящее время моя лучшая идея состоит в том, чтобы добиться точности платформы, выполнив что-то вроде:
$maximumPrecision = strlen('' . 1/3) - 2;
и затем создайте строку 0-9 в цикле, сколько раз нам сообщает $ MaximumPrecision. Например, если точность равна 12, я сгенерирую 12 случайных чисел и объединю их. Я думаю, что это ужасная идея.
Обновление: имеет ли это смысл?
$bytes =getRandomBytes(7); // Just a function that returns random bytes.
$bytes[6] = $bytes[6] & chr(15); // Get rid off the other half
$bytes .= chr(0); // Add a null byte
$parts = unpack('V2', $bytes);
$number = $parts[1] + pow(2.0, 32) * $parts[2];
$number /= pow(2.0, 52);