Pull to refresh

Comments 5

Открыл 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 не очень знаю, строго не судите :)
Да, по-моему, автор что-то не то пишет.

Можно вообще написать такой генератор псевдослучайных чисел, который тест на выпадение шестёрок будет проходить идеально.
Например такй: seed ГПСЧ будет от 0 до 100 * 3 (100 раз по 3 рола), а само число выбираться case-ом. После броска: seed++.

Но генерировать пароли таким генератором явным образом не стоит) Всего 300 разных паролей.

Вопрос качества ГСПЧ — это вопрос энтропии источника, а не то, насколько он адекватно аппроксимирует равномерное распределение.
А почему бы не скормить случайные числа в die hard и не получить более-менее надежные результаты теста?
Функция random_bytes возвращает строку и принимает в качестве входных параметров int, задающий длину (в байтах) возвращаемого значения:
$bytes = random_bytes('10');


люблю пхп :)
Вы про строку '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
Sign up to leave a comment.

Articles

Change theme settings