Comments 5
Открыл R написал такой код:
Из 5 попыток запуска был результат как лучше чем у random_int так и хуже чем у rand :)
Собсно вопрос, какова роль удачи в приведенном в статье примере? Наверняка можно подобрать случай где результаты будут обратные.
ЗЫ: PHP я не знаю, да и R не очень знаю, строго не судите :)
n <- 1000000
a <- rep(0, 4)
k <- NULL
for (i in 1:n) {
k <- sum(sample(6, size = 3, replace = TRUE) == 6)
a[k+1] <- a[k+1] + 1
}
Из 5 попыток запуска был результат как лучше чем у random_int так и хуже чем у rand :)
Собсно вопрос, какова роль удачи в приведенном в статье примере? Наверняка можно подобрать случай где результаты будут обратные.
ЗЫ: PHP я не знаю, да и R не очень знаю, строго не судите :)
+8
Да, по-моему, автор что-то не то пишет.
Можно вообще написать такой генератор псевдослучайных чисел, который тест на выпадение шестёрок будет проходить идеально.
Например такй: seed ГПСЧ будет от 0 до 100 * 3 (100 раз по 3 рола), а само число выбираться case-ом. После броска: seed++.
Но генерировать пароли таким генератором явным образом не стоит) Всего 300 разных паролей.
Вопрос качества ГСПЧ — это вопрос энтропии источника, а не то, насколько он адекватно аппроксимирует равномерное распределение.
Можно вообще написать такой генератор псевдослучайных чисел, который тест на выпадение шестёрок будет проходить идеально.
Например такй: seed ГПСЧ будет от 0 до 100 * 3 (100 раз по 3 рола), а само число выбираться case-ом. После броска: seed++.
Но генерировать пароли таким генератором явным образом не стоит) Всего 300 разных паролей.
Вопрос качества ГСПЧ — это вопрос энтропии источника, а не то, насколько он адекватно аппроксимирует равномерное распределение.
0
А почему бы не скормить случайные числа в die hard и не получить более-менее надежные результаты теста?
+1
Функция random_bytes возвращает строку и принимает в качестве входных параметров int, задающий длину (в байтах) возвращаемого значения:
$bytes = random_bytes('10');
люблю пхп :)
+3
Вы про строку '10'? Теперь есть строгая типизация:
$ php7 -r "declare(strict_types=1); random_bytes('10');"
Fatal error: Uncaught TypeError: random_bytes() expects parameter 1 to be integer, string given in Command line code:1
Stack trace:
#0 Command line code(1): random_bytes('10')
#1 {main}
thrown in Command line code on line 1
+7
Sign up to leave a comment.
Articles
Change theme settings
Случайность в PHP7 – Повезет ли мне?