Intereting Posts
Как получить текущее местоположение пользователя с помощью Google Geocode API и PHP Можно ли безопасно использовать str_replace в кодированной кодировке UTF-8, если в качестве аргументов заданы только строки с кодировкой UTF-8? Как индексировать XML-элементы в PHP? Может ли простая модель просто расширить Zend_Db_Row (по существу, Active Record)? назначение максимального числа в php & mysql Как мне повторить попытку PHP flock () в течение определенного периода времени? Регистрация, логин, сеанс и публикация мер безопасности Как замаскировать свой PHP-скрипт в качестве браузера? Пустая строка вместо нулевых значений Eloquent Пользовательская проверка не работает – Yii2-app-basic-Yii2 Форма Zend: проверка зависимого поля Как я могу сделать этот код наведения короче? И как я могу создать файл css, который реализует настройки более чем на одну кнопку? как запустить javascript в html, загруженном через ajax Как заставить https для prod, но http для среды dev? Создание эскиза из загруженного изображения

Действительно ли функция rand PHP очень плоха?

Я знаю, что рекомендуется использовать mt_rand() над rand() потому что он использует Mersenne Twister над любым PRNG rand() , но вот что-то, что никогда не кажется факторизованным в: активности пользователя.

Фактически, действия пользователей можно считать довольно случайными. Например, в любой момент может возникнуть 4% -ный шанс, что пользователь может вызвать вызов rand() для одной функции, 8% -ный шанс для пользователя, вызывающего три вызова rand() и shuffle() , 20% пользователя, вызывающего два вызова rand() , и каждый раз, когда пользователь загружает страницу, PRNG продвигается одним.

В конце концов, не является ли движение NPC тем, что делает RNG-злоупотребление в играх Pokémon настолько расстраивающим?

Итак, имея в виду, что, хотя у rand() есть свои шаблоны, является случайность действий пользователей и многообразие применений rand() достаточных для того, чтобы сделать недостатки rand() неуместными? В абсолютном выражении mt_rand() является «более случайным». Но как это соотносится с энтропией человеческого элемента?

    Если вы предполагаете, что вызовы rand () генерируются человеческими пользователями в случайные моменты, то я предполагаю, что ваша логика правильная.

    Однако представьте себе бота, который отправляет одни и те же запросы каждые X секунд (в ночные часы, не прерываемые человеческими вызовами), или простой скрипт, который выполняется в течение определенного времени и запускает rand () один за другим. Тогда вы не можете полностью зависеть от случайности.

    комментарий от php.net:

    Обратите внимание, что автоматическое сеяние, по-видимому, выполняется с текущим количеством секунд, что означает, что вы можете получить одинаковые результаты для нескольких прогонов на быстром сервере. Либо вызовите srand () самостоятельно с более часто меняющимся семенем, либо используйте mt_rand (), который, как представляется, не страдает от проблемы.

    Но как это соотносится с энтропией человеческого элемента?

    Я предполагаю, что этот сценарий:

    • Игра с тысячей пользователей.
    • По какой-то причине, каждые X минут, вы должны установить случайное значение для каждого пользователя (каждый раз с одинаковым порядком)

    Из-за псевдослучайной функции более вероятно с пользователем XXX, и пользователь YYY всегда имеет одинаковое расстояние. Поскольку одна из проблем псевдослучайности заключается в том, что область может быть «более» предсказуемой после достаточного количества циклов.