Как протестировать случайные числа?

Мне нужно загрузить файлы на S3 с машины, на которой часы должны быть установлены неправильно.

blockquote>

Время в прошлом или будущем? Хотя вероятность минимальна, это может вызывать проблемы (но ничто в документации не указывает на то же самое).

Однако я вижу, что вы используете пакет Net::HTTP и делаете необработанный запрос PUT , а метод, который вы используете для генерации предварительно назначенного URL-адреса, не выглядит для меня очень убедительным из-за [ 111] вещь.

В любом случае, у меня действительно было такое требование (загрузка предварительно заданного URL-адреса, но без части «неверное время на машине»). Это руководство, которое я использовал, и оно работало:

https://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjectPreSignedURLRubySDK.html

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

19
задан 22 April 2009 в 19:26
поделиться

4 ответа

В большинстве тестов вы можете предоставить большой файл случайных чисел (целых или с плавающей запятой) и запустить различные тесты для этого файла примера. DIEHARD работал таким образом, если я правильно помню, и некоторые другие тоже. Если вы действительно хотите увидеть сбой вашего генератора, вы можете попробовать использовать TestU01 Пьера Л'Экуйера, в котором достаточно тестов, чтобы позволить почти каждому генератору провалить хотя бы один тест: -)

Тем не менее, для большинства наборов тестов имеется обширная документация, по крайней мере, я знаю это для DIEHARD , набора тестов из NIST SP 800-22 , а также DieHarder и TestU01 (ссылки идут в документы). Способы предоставления случайных чисел для проверки обычно различны, но упомянуты в соответствующей документации.

9
ответ дан 30 November 2019 в 04:37
поделиться

Есть много вещей, которые нужно проверить, если вы хотите проверить свой ГСЧ самостоятельно. Вот несколько основных функций, которые могут показать, что ваша числовая последовательность не является действительно случайной или, возможно, неотличимой от случайной?

Взгляните на:

  1. Распределение - вы уже провели некоторый анализ своего распределения. Вы хотите, чтобы каждое возможное число имело одинаковую вероятность появления.

  2. Циклическое поведение - повторяется ли одна и та же последовательность снова и снова? Повторяющаяся последовательность может быть довольно длинной.

  3. Наличие дубликатов (... CBBAF F ...), триплетов (... CBAAA F ...) и т. Д. Статистически в последовательности случайных чисел у вас есть определенная вероятность дубликатов (одно и то же число, сгенерированное два раза подряд), триплетов и т. Д. Рассчитайте эту вероятность и проверьте, имеет ли ваша последовательность псевдослучайных чисел такую ​​же вероятность появления дубликатов?

Обратите внимание, что для большинства из этих тестов вам нужно иметь довольно длинные последовательности случайных чисел, чтобы иметь возможность получать разумные и точные результаты статистического анализа.

Я предположил, что последовательности целых чисел peudo случайные числа, что легко исправить, умножив числа [0, 1] на соответствующую константу.

6
ответ дан 30 November 2019 в 04:37
поделиться

Вероятно, я бы выбрал путь визуального анализа результатов. Код для этого достаточно прост, как показано в следующем псевдокоде, основанном на его статье .

1. Create an image of size x by y
2. For ndx = 0 to x
  3. For ndy = 0 to y
    4. Let random be a random number between 0 and 1
    5. If random = 1, set the image point at ndx, ndy as black
6. Display the generated image

Кроме того, Random.org имеет больше информации о статистическом анализе алгоритмы, но они также используют вышеупомянутую статью в качестве примера визуального анализа.

0
ответ дан 30 November 2019 в 04:37
поделиться

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

0
ответ дан 30 November 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: