ГОСТ Р ИСО 28640-2012
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
Статистические методы
ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ
Statistical methods. Random variate generation
ОКС 03.120.30
Дата введения 2013-12-01
Предисловие
1 ПОДГОТОВЛЕН Автономной некоммерческой организацией "Научно-исследовательский центр контроля и диагностики технических систем" (АНО "НИЦ КД") на основе собственного перевода на русский язык англоязычной версии стандарта, указанного в пункте 4
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 125 "Статистические методы в управлении качеством продукции"
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 29 ноября 2012 г. N 1274-ст
4 Настоящий стандарт идентичен международному стандарту ИСО 28640:2010* "Методы генерации случайных чисел" (ISO 28640:2010 "Random variate generation methods", IDT).
________________
* Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей. - .
Наименование настоящего стандарта изменено относительно наименования указанного международного стандарта для приведения в соответствие с ГОСТ Р 1.5-2012 (пункт 3.5).
При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты, сведения о которых приведены в дополнительном приложении ДА
5 ВВЕДЕН ВПЕРВЫЕ
6 ПЕРЕИЗДАНИЕ. Апрель 2020 г.
Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
Введение
В настоящем стандарте установлены типовые алгоритмы, позволяющие генерировать последовательности псевдослучайных чисел, используемых при моделировании реализации случайной величины.
В настоящее время большое количество специалистов, работающих в области математической статистики, используют компьютерное моделирование. Поэтому очень важно, чтобы при этом были использованы псевдослучайные числа, хорошо согласующиеся с выбранным распределением. Настоящий стандарт также позволяет установить правильность рандомизации.
Существует шесть основных направлений использования рандомизации:
- отбор случайной выборки;
- анализ выборочных данных;
- разработка стандартов;
- проверка теоретических результатов;
- проверка того, что предложенная процедура соответствует заявленным свойствам;
- принятие решений в условиях неопределенности.
Приведенные в настоящем стандарте методы и алгоритмы обладают большим периодом повторения и хорошо согласуются с генерируемым законом распределения. При необходимости использования других алгоритмов генерации псевдослучайных чисел до их применения следует убедиться, что период последовательности псевдослучайных чисел является достаточным для решения задачи, а генерируемые псевдослучайные числа хорошо согласуются с моделируемым распределением.
Применяемый в настоящем стандарте международный стандарт разработан Техническим комитетом ISO/TC 69 "Применение статистических методов".
1 Область применения
В настоящем стандарте установлены методы генерации случайных чисел, подчиняющихся равномерному и другим законам распределения, используемых при применении метода Монте-Карло. В настоящий стандарт не включены криптографические методы генерации случайных чисел. Настоящий стандарт будет полезен в первую очередь:
- научным работникам, технологам и специалистам в области систем управления, использующим статистическое моделирование;
- специалистам в области математической статистики, использующим рандомизацию при разработке методов статистического контроля качества продукции и процессов, планирования экспериментов и обработки данных;
- математикам, разрабатывающим сложные процедуры оптимизации с использованием метода Монте-Карло;
- разработчикам программного обеспечения при создании алгоритмов генерации псевдослучайных чисел.
2 Нормативные ссылки
В настоящем стандарте использованы нормативные ссылки на следующие стандарты. Для датированных ссылок применяют только указанное издание ссылочного стандарта, для недатированных - последнее издание (включая все изменения).
ISO/IEC 2382-1
________________
ISO 3534-1, Statistics - Vocabulary and symbols - Part 1: General statistical terms and terms used in probability (Статистика. Словарь и условные обозначения. Часть 1. Общие статистические термины и термины, используемые в вероятностных задачах)
ISO 3534-2, Statistics - Vocabulary and symbols - Part 2: Applied statistics (Статистика. Словарь и условные обозначения. Часть 2. Прикладная статистика)
3 Термины и определения
В настоящем стандарте применены термины по ИСО/МЭК 2382-1, ИСО 3534-1, ИСО 3534-2, а также следующие термины с соответствующими определениями:
3.1 случайное число (random variate, random number): Число, представляющее собой реализацию случайной величины.
Примечание 1 - Термин "случайное число" часто используют по отношению к равномерно распределенной случайной величине.
Примечание 2 - Случайные числа, представленные в виде последовательности, называют последовательностью случайных чисел.
3.2 псевдослучайное число (pseudo-random number): Число, полученное в соответствии с заданным алгоритмом, используемое в качестве случайного числа.
Примечание - В ситуациях, когда из контекста ясно, что речь идет о псевдослучайных числах, псевдослучайное число иногда называют "случайным числом".
3.3 физическое случайное число (physical random number): Случайное число (3.1), полученное на основе некоторого физического явления.
3.4 двоичная последовательность случайных чисел (binary random number sequence): Последовательность случайных чисел (3.1), состоящая из нулей и единиц.
3.5 начальное число (seed): Исходное число, необходимое для начала генерации псевдослучайных чисел.
4 Условные обозначения и математические операции над двоичными числами
4.1 Условные обозначения
В настоящем стандарте применены обозначения по ИСО/МЭК 2382-1, ИСО 3534-1, ИСО 3534-2, а также следующие условные обозначения и сокращения:
4.2 Математические операции над двоичными числами
В настоящем стандарте использованы следующие математические операции над двоичными числами:
Пример 1 - Правила побитовой логической операции
1
0
1
0
Пример побитовой логической операции
Пример 2 - Правила побитовой логической операции
1
0
1
0
Пример побитовой логической операции
m:=k - замена значения m на значение k;
5 Псевдослучайные числа (равномерное распределение)
5.1 Общие положения
В данном подразделе приведены алгоритмы генерации псевдослучайных чисел, соответствующих равномерному распределению, основанные на методах М-последовательности (5.2).
В приложении А для информации приведен принцип генерации физических случайных чисел.
В приложении В приведены тексты компьютерных программ для всех рекомендуемых алгоритмов. Несмотря на то что линейный конгруэнтный метод не рекомендован для решения сложных задач моделирования методом Монте-Карло, он также включен в приложение В для информации.
5.2 Метод М-последовательности
a) Для натурального числа
b) Наименьшее положительное целое
c) Полином
является характеристическим полиномом для приведенной выше рекуррентной формулы.
Примечание 1 - Необходимым и достаточным условием того, что приведенная в перечислении а) формула может быть использована для генерации М-последовательности, является то, что хотя бы одно из начальных чисел
Примечание 2 - Буква М в обозначении М-последовательности является первой буквой английского слова "maximum" (наибольший). Период любой последовательности, сгенерированной по приведенной в перечислении а) рекуррентной формуле, не может быть больше
Примечание 3 - При использовании данного метода в качестве характеристического полинома применяют или один из полиномов, приведенных в таблице 1, или другой, более простой полином из справочной литературы, а его коэффициенты используют в формуле перечисления а).
5.3 Пятипараметрический метод
Данный метод использует характеристический полином из 5 членов и позволяет генерировать последовательности w-битовых двоичных целых чисел в соответствии со следующей рекуррентной формулой. Такой алгоритм называют GFSR
_______________
Параметры (
Таблица 1 - Пятипараметрические характеристические полиномы
89 | 20 | 40 | 69 |
107 | 31 | 57 | 82 |
127 | 22 | 63 | 83 |
521 | 86 | 197 | 47 |
607 | 167 | 307 | 461 |
1279 | 339 | 630 | 988 |
2203 | 585 | 1197 | 1656 |
2281 | 577 | 1109 | 1709 |
3217 | 809 | 1621 | 2381 |
4253 | 1093 | 2254 | 3297 |
4423 | 1171 | 2273 | 3299 |
9689 | 2799 | 5463 | 7712 |
Примечание - |
5.4 Комбинированный метод Таусворта
При генерации случайных чисел методом Таусворта используют рекуррентную формулу
где
При использовании такой М-последовательности последовательность w-битовых целых чисел, называемую простой последовательностью Таусворта с параметрами (
где
Период этой последовательности составляет
Примечание 1 - Два целых числа являются взаимно простыми или относительно простыми, если у них нет общих делителей, кроме единицы.
Пример - Если в качестве исходного выбран многочлен
. . .
Простая последовательность Таусворта, полученная таким образом в десятичных числах, имеет вид: 15, 1, 3, 5, 14, 2, 6, 11, 12, 4, 13, 7, 8, 9, 10, 15, 1, 3,..., с периодом (2
Если имеется несколько, например,
Параметры и начальные числа комбинированной последовательности Таусворта представляют собой комбинацию параметров и начальных чисел каждой простой последовательности Таусворта. Если периоды
Примечание 2 - Данный метод может генерировать последовательности чисел многомерного равномерного распределения. Алгоритм taus88_31(), приведенный в приложении А, позволяет генерировать последовательность 31-битовых целых чисел, комбинируя три простых генератора Таусворта с параметрами (
5.5 Метод Мерсенна Твистера
Метод Мерсенна Твистера позволяет генерировать последовательность двоичных псевдослучайных целых
где
(Здесь
Примечание - Необходимый объем памяти для этих вычислений -
где
Параметрами этого алгоритма являются (
Заключительное значение
6 Генерация случайных чисел
6.1 Введение
В данном разделе приведено описание методов генерации случайных чисел
6.2 Равномерное распределение
6.2.1 Стандартное равномерное распределение
6.2.1.1 Функция плотности вероятности
6.2.1.2 Метод генерации случайной величины
Если максимальное значение равномерного случайного целого числа
Пример - Для всех
Примечание 1 - Поскольку
Примечание 2 - Величина
Примечание 3 - Случайные числа, соответствующие стандартному равномерному распределению, называют стандартными равномерными случайными числами и обозначают
6.2.2 Общий случай равномерного распределения
6.2.2.1 Функция плотности вероятности
где
6.2.2.2 Метод генерации случайной величины
Если стандартное равномерное случайное число
6.3 Стандартное бета-распределение
6.3.1 Функция плотности вероятности
где
6.3.2 Метод Йонка
Если стандартные равномерные случайные числа
Если
6.3.3 Метод Ченга
Если стандартные равномерные случайные числа
a)
b) вычисляют
c) если
тогда
d) В противном случае генерируют
Если
Примечание - Случайные числа, соответствующие бета-распределению, заданному на интервале
6.4 Треугольное распределение
6.4.1 Функция плотности вероятности
где
6.4.2 Метод генерации случайной величины
Если стандартные равномерные случайные числа
6.5 Общее экспоненциальное распределение с параметрами положения и масштаба
6.5.1 Функция плотности вероятности
где
6.5.2 Метод генерации случайной величины
Если стандартное равномерное случайное число
6.6 Нормальное распределение (распределение Гаусса)
6.6.1 Функция плотности вероятности
где
Примечание - Обычно нормальную случайную величину обозначают
6.6.2 Метод Бокса - Мюллера
Если стандартные равномерные случайные числа
Примечание 1 - Поскольку
Примечание 2 - При получении
6.7 Гамма-распределение
6.7.1 Функция плотности вероятности
где
6.7.2 Методы генерации случайной величины
6.7.2.1 Общие положения
Алгоритмы приведены для трех ситуаций в зависимости от значения параметра формы
6.7.2.2 Алгоритм для
Используя независимые равномерные случайные числа
Примечание - Этим методом для
6.7.2.3 Алгоритм для
Используя стандартное нормальное случайное число
В случае когда
Примечание - Тем же методом при
6.7.2.4 Приближенный метод для
a) Задают
b) Генерируют стандартное нормальное случайное число
c) Если
d) Вычисляют
e) Если
f) Вычисляют
g) Если
h) Если
Примечание - Метод основан на преобразовании Уилсона - Хилферти, приводящем
6.7.2.5 Точный метод генерации Ченга для
a) Задают
b) Генерируют стандартные равномерные случайные числа
c) Вычисляют
d) Если
e) Если
f) Генерируют стандартные равномерные случайные числа
Если
то
6.8 Распределение Вейбулла
6.8.1 Функция распределения вероятности
где
6.8.2 Метод генерации случайной величины
Если стандартные равномерные случайные числа
6.9 Логнормальное распределение
6.9.1 Функция плотности вероятности
где
6.9.2 Метод генерации случайной величины
Используя стандартные нормальные случайные числа
для получения случайных чисел, соответствующих логнормальному распределению.
6.10 Логистическое распределение
6.10.1 Функция вероятности
где
6.10.2 Метод генерации случайной величины
Если стандартные равномерные случайные числа
6.11 Многомерное нормальное распределение
Случайные числа
…
где
Примечание -
a) Для
b) Для
6.12 Биномиальное распределение
6.12.1 Функция распределения
Если вероятность появления события при каждом испытании равна
где 0
6.12.2 Методы генерации случайной величины
6.12.2.1 Общие положения
Рассматриваемые в данном разделе методы позволяют получить случайные числа
6.12.2.2 Прямой метод
Генерируют
6.12.2.3 Метод обратной функции
Вычисляют функцию распределения
Для получения случайного числа
6.12.2.4 Метод положения
Вычисляют
a)
b) Составляют набор индексов
c) Для не пустого набора
1) Выбирают любой элемент
2) Устанавливают
3) Если
4) Удаляют элемент
Если приведенные выше подготовительные действия выполнены, то двухмерное случайное число
d) Генерируют стандартное равномерное случайное число
e) Вычисляют
f) Если
6.13 Распределение Пуассона
6.13.1 Функция распределения
Функция распределения Пуассона со средним
где
6.13.2 Метод, использующий связь с экспоненциальным распределением
Генерируют стандартные равномерные случайные числа
6.13.3 Метод наложения
Сначала выбирают постоянную
Примечание - Этот метод эффективен, когда
6.14 Дискретное равномерное распределение
Для генерации дискретных равномерных случайных чисел от
a) Определяют натуральное число
Примечание 1 - Величина
Пример 1 - Если
b) Добавляют 1 к двоичному целому числу, которое сформировано из первых
Примечание 2 -
Пример 2 - Если первые 7 битов числа 1011001, то соответствующим десятичным числом является 89 (64 + 16 + 8 + 1 = 89).
c) Искомое десятичное случайное число - это соответствующее десятичное число плюс
Примечание 3 - Если
Примечание 4 - При использовании линейного конгруэнтного метода для генерации псевдослучайных чисел
Далее, если
d) Генерируют последовательность десятичных случайных чисел из
e) Из последовательности случайных чисел, полученной в соответствии c d), удаляют числа более
Приложение А
(справочное)
Таблица физических случайных чисел
А.1 Таблица случайных чисел
В отличие от псевдослучайных чисел у физических случайных чисел отсутствуют функциональная связь и периодичность. В таблице А.1 приведена последовательность случайных чисел, полученных в результате измерений характеристики физической системы со случайными свойствами.
Таблица А.1 - Таблица физических случайных чисел
1 | 93 | 90 | 60 | 02 | 17 | 25 | 89 | 42 | 27 | 41 | 64 | 45 | 08 | 02 | 70 | 42 | 49 | 41 | 55 | 98 |
2 | 34 | 19 | 39 | 65 | 54 | 32 | 14 | 02 | 06 | 84 | 43 | 65 | 97 | 97 | 65 | 05 | 40 | 55 | 65 | 06 |
3 | 27 | 88 | 28 | 07 | 16 | 05 | 18 | 96 | 81 | 69 | 53 | 34 | 79 | 84 | 83 | 44 | 07 | 12 | 00 | 38 |
4 | 95 | 16 | 61 | 89 | 77 | 47 | 14 | 14 | 40 | 87 | 12 | 40 | 15 | 18 | 54 | 89 | 72 | 88 | 59 | 67 |
5 | 50 | 45 | 95 | 10 | 48 | 25 | 29 | 74 | 63 | 48 | 44 | 06 | 18 | 67 | 19 | 90 | 52 | 44 | 05 | 85 |
6 | 11 | 72 | 79 | 70 | 41 | 08 | 85 | 77 | 03 | 32 | 46 | 28 | 83 | 22 | 48 | 61 | 93 | 19 | 98 | 60 |
7 | 19 | 31 | 85 | 29 | 48 | 89 | 59 | 53 | 99 | 46 | 72 | 29 | 49 | 06 | 58 | 65 | 69 | 06 | 87 | 09 |
8 | 14 | 58 | 90 | 27 | 73 | 67 | 17 | 08 | 43 | 78 | 71 | 32 | 21 | 97 | 02 | 25 | 27 | 22 | 81 | 74 |
9 | 28 | 04 | 62 | 77 | 82 | 73 | 00 | 73 | 83 | 17 | 27 | 79 | 37 | 13 | 76 | 29 | 90 | 07 | 36 | 47 |
10 | 37 | 43 | 04 | 36 | 86 | 72 | 63 | 43 | 21 | 06 | 10 | 35 | 13 | 61 | 01 | 98 | 23 | 67 | 45 | 21 |
11 | 74 | 47 | 22 | 71 | 36 | 15 | 67 | 41 | 77 | 67 | 40 | 00 | 67 | 24 | 00 | 08 | 98 | 27 | 98 | 56 |
12 | 48 | 85 | 81 | 89 | 45 | 27 | 98 | 41 | 77 | 78 | 24 | 26 | 98 | 03 | 14 | 25 | 73 | 84 | 48 | 28 |
13 | 55 | 81 | 09 | 70 | 17 | 78 | 18 | 54 | 62 | 06 | 50 | 64 | 90 | 30 | 15 | 78 | 60 | 63 | 54 | 56 |
14 | 22 | 18 | 73 | 19 | 32 | 54 | 05 | 18 | 36 | 45 | 87 | 23 | 42 | 43 | 91 | 63 | 50 | 95 | 69 | 09 |
15 | 78 | 29 | 64 | 22 | 97 | 95 | 94 | 54 | 64 | 28 | 34 | 34 | 88 | 98 | 14 | 21 | 38 | 45 | 37 | 87 |
16 | 97 | 51 | 38 | 62 | 95 | 83 | 45 | 12 | 72 | 28 | 70 | 23 | 67 | 04 | 28 | 55 | 20 | 20 | 96 | 57 |
17 | 42 | 91 | 81 | 16 | 52 | 44 | 71 | 99 | 68 | 55 | 16 | 32 | 83 | 27 | 03 | 44 | 93 | 81 | 69 | 58 |
18 | 07 | 84 | 27 | 76 | 18 | 24 | 95 | 78 | 67 | 33 | 45 | 68 | 38 | 56 | 64 | 51 | 10 | 79 | 15 | 46 |
19 | 60 | 31 | 55 | 42 | 68 | 53 | 27 | 82 | 67 | 68 | 73 | 09 | 98 | 45 | 72 | 02 | 87 | 79 | 32 | 84 |
20 | 47 | 10 | 36 | 20 | 10 | 48 | 09 | 72 | 35 | 94 | 12 | 94 | 78 | 29 | 14 | 80 | 77 | 27 | 05 | 67 |
21 | 73 | 63 | 78 | 70 | 96 | 12 | 40 | 36 | 80 | 49 | 23 | 29 | 26 | 69 | 01 | 13 | 39 | 71 | 33 | 17 |
22 | 70 | 65 | 19 | 86 | 11 | 30 | 16 | 23 | 21 | 55 | 04 | 72 | 30 | 01 | 22 | 53 | 24 | 13 | 40 | 63 |
23 | 86 | 37 | 79 | 75 | 97 | 29 | 19 | 00 | 30 | 01 | 22 | 89 | 11 | 84 | 55 | 08 | 40 | 91 | 26 | 61 |
24 | 28 | 00 | 93 | 29 | 59 | 54 | 71 | 77 | 75 | 24 | 10 | 65 | 69 | 15 | 66 | 90 | 47 | 90 | 48 | 80 |
25 | 40 | 74 | 69 | 14 | 01 | 78 | 36 | 13 | 06 | 30 | 79 | 04 | 03 | 28 | 87 | 59 | 85 | 93 | 25 | 73 |
А.2 Метод генерации физических случайных чисел
Для генерации случайных чисел, приведенных в таблице А.1, использован электрический шум диода. В диоде шумовой сигнал достаточно велик вследствие эффекта лавинного нарастания заряда. Поэтому диод часто используют как источник шума. Был использован лавинно-пролетный диод NC2401
_______________
Методы преобразования шумового сигнала в цифровую форму:
a) аналогово-цифровое преобразование;
b) наблюдение последовательности импульсов с определением количества импульсов в единицу времени;
c) наблюдение последовательности импульсов с определением интервала времени между последовательными импульсами.
Например, для аналогово-цифрового преобразования может быть использован конвертер DAS-4102
_______________
Поскольку у аналогово-цифрового конверсионного оборудования могут появляться ошибочные значения, гистограммы значений после преобразования не показывают равномерного распределения. Для получения большей равномерности распределения 2 бита были получены из одного и того же источника случайных чисел
(0,1)
(1,0)
(0,0), (1,1)
Случайные числа, приведенные в таблице 1, получены в соответствии с вышеупомянутым методом. Если вероятности появления чисел (0,1) и (1,0) равны друг другу, случайное число распределено равномерно. Поскольку интервал между последовательными измерениями равен 1 мс, характеристики оборудования можно считать постоянными. Поэтому (0,1) и (1,0) считают соответствующими одному и тому же распределению вероятностей. Альтернативный метод корректировки сводится к определению распределения вероятностей характеристик, но поскольку распределение зависит от особенностей оборудования, этот метод в данном случае не был использован. Далее для безопасности 32 бита были собраны в одну единственную группу или были сформированы из псевдослучайных чисел с использованием метода Мерсенна Твистера (обычно называемого genrand), установленного в 5.5. Метод Мерсенна Твистера обычно инициируют функцией init_genrand (s), где s=19660809. Если необходимы оригинальные последовательности случайных чисел, они могут быть восстановлены с помощью единственного или повторного использования метода Мерсенна Твистера.
В таблице А.1 приведены десятичные случайные числа, полученные вышеупомянутым методом, путем отбора высших четырех бит 32-битового представления случайного числа. Если значение этого числа не меньше нуля и не больше девяти, значение используют в качестве случайного числа. Однако если значение этого числа 10 или больше, его отбрасывают и генерируют следующее случайное число.
Приложение В
(справочное)
Алгоритмы генерации псевдослучайных чисел
В.1 Текст программы трехпараметрического метода GFSR
Ниже приведен текст программы на языке Си, которая в соответствии с ИСО/МЭК 9899 является примером метода GFSR с параметрами (
Чтобы получить другую последовательность псевдослучайных чисел, необходимо изменить начальное число
В данной программе предполагается, что длина "беззнакового длинного целого" составляет не меньше 32 бит.
Примечание - Соответствующий текст программы трехпараметрического GFSR на языке BASIC приведен для информации.
В.2 Текст программы пятипараметрического метода GFSR
Параметры и период данной программы составляют (521, 86, 197, 447, 32) и (2
При необходимости многократного получения наборов случайных чисел для моделирования инициализацию init_gfsr5 (s) необходимо выполнить один раз перед началом моделирования. После каждого повторения содержание таблицы х[Р] размера Р и переменную state_i необходимо сохранять и использовать их в качестве начальных значений при следующем повторении.
Если необходима другая последовательность с другим периодом, то значения
Примечание - Соответствующий текст программы пятипараметрического GFSR на языке BASIC приведен для информации.
В.3 Текст программы комбинированного метода Таусворта
Ниже приведен текст программы комбинированного метода Таусворта на языке Си, генерирующего целые числа из интервала от 0 до (2
Инициализация init_taus88 (s) происходит при условии, что начальное число
- хотя бы один разряд из высших 31 разряда
- хотя бы один разряд из высших 29 разрядов
- хотя бы один разряд из высших 28 разрядов
Поскольку самый низший разряд
генерируют числа последовательности Таусворта с параметрами (29, 2, 4) и (28, 3, 17),
Выбор трех параметров (
Если необходимо получить независимый набор случайных чисел для каждого повторения моделирования, функцию инициализации init_taus88 (s) необходимо вызвать один раз в начале моделирования. После каждого повторения значения
Примечание - Соответствующий текст программы метода Таусворта на языке BASIC приведен для информации.
В.4 Текст программы для метода Мерсенна Твистера
Ниже приведен текст программы для метода Мерсенна Твистера на языке Си. Функция genrand () генерирует псевдослучайные числа в виде целого 32-битового числа без знака из интервала от 0 до (2
Если необходимо получить независимый набор случайных чисел в каждом из многократных повторений при моделировании, к функции инициализации init_genrand (
Пример - В данном примере использовано р = 624 слова с параметрами (624, 397, 31, 32, 0x9908b0df, 11, 7, 15, 18, 0x9d2c5680, 0xefc60000). Здесь числа из 10 знаков, начинающиеся с 0х, являются 32-битовыми целыми без знака, представленными в шестнадцатеричном коде. Период равен (
В данной программе длина "беззнакового длинного целого" составляет не менее 32 бит.
Примечание - Соответствующий текст программы метода Мерсенна Твистера на языке BASIC приведен для информации.
В.5 Линейный конгруэнтный метод
В.5.1 Общие положения
В.5.1.1 Применение
Линейные конгруэнтные методы широко применяют в программном обеспечении, так как они сочетают в себе экономное использование памяти компьютера с высокой скоростью исполнения. Однако эти методы имеют относительно короткий период и, следовательно, не всегда обеспечивают достаточную случайность генерируемых чисел, особенно при необходимости получения случайных многомерных последовательностей.
В.5.1.2 Определение
Большая часть линейных конгруэнтных методов генерирует последовательности псевдослучайных чисел
где
Линейный конгруэнтный метод определен, как только заданы значения параметров
Примечание 1 - Алгоритм рекуррентных соотношений состоит в следующем. Вычисляют
Примечание 2 - Значение
В.5.1.3 Метод выбора значений параметров
Значения
Поскольку
Для выбора
Для множителя
Примечание - В случае, когда
8.5.1.4 Пример параметров
Для 32-битовых компьютеров следует использовать один из наборов параметров, приведенных в таблице В.1.
Таблица В.1 - Наборы параметров для использования линейного конгруэнтного метода
Номер строки | |||
1 | 1 664 525 | * | 2 |
2 | 1 566 083 941 | 0 | 2 |
3 | 48 828 125 | 0 | 2 |
4 | 2 100 005 341 | 0 | 2 |
5 | 397 204 094 | 0 | 2 |
6 | 314 159 369 | 0 | 2 |
Примечание 1 - Символ * указывает, что может быть использовано любое нечетное число. |
В.5.2 Текст программы для линейного конгруэнтного метода
В.5.2.1 Общие положения
Ниже приведен текст программы для линейного конгруэнтного метода на языке Си. Программа соответствует ИСО/МЭК 9899. Приведено два варианта программы, один - для случая, когда
В.5.2.2 Вариант
При каждом обращении функция Icong32 () формирует случайное целое число от нуля до (2
Множитель и второе слагаемое изменяются при изменении значений MULTIPLIER и INCREMENT в каждой программе. Последовательность случайных чисел перезапускается при использовании выхода Icong32 () в качестве аргумента функции инициализации init_lcong32 (начальное число).
В.5.2.3 Вариант
Каждый раз при обращении к функции Icong31 () она формирует случайное целое число из интервала от 1 до (2
Для изменений значений множителя необходимо его указать в операторе присвоения константе MULTIPLIER в тексте программы.
Примечание 1 - Текст программы для линейного конгруэнтного метода на языке Basic приведен для информации.
Примечание 2 - Приведенный ниже текст программы на языке BASIC необходим для преобразования программных кодов языка Си в программные коды языка BASIC, преобразования случайных чисел в соответствии с приложением А и выполнения побитовых операций на языке BASIC.
В.6 Примеры
В таблице В.2 приведены примеры последовательностей случайных чисел, полученных с использованием программ, приведенных в приложении В, с установленными значениями параметров (для проверки). Первые 5 псевдослучайных чисел и 5 псевдослучайных чисел с промежутками в 1000 приведены для сравнения.
Таблица В.2 - Примеры случайных чисел
Метод гене- | Линейный конгруэнтный метод | Трехпара- | Пятипара- | Комбини- | Метод Мерсенна Твистера | Физическое случайное число | |
Обра- | Icong32_31 | Icong31 | gfsr_31 | gfsr5_31 | taus88_31 | genrand_31 | rndtable31 |
| |||||||
Обра- | init_lcong32 | init_lcong31 | init_gfsr | init_gfsr5 | init_taus88 | init_genrand | init_rndtable |
Началь- | 19660809 | 19660809 | 19660809 | 19660809 | 19660809 | 19660809 | 19660809 |
Результаты | |||||||
Номер случай- | Случайное число | ||||||
1 | 1276136251 | 1990801112 | 716530710 | 716530710 | 116464117 | 652430828 | 57316494 |
2 | 865096703 | 549424302 | 1004066893 | 1004066893 | 1350114716 | 769118065 | 905630297 |
3 | 1405063418 | 2128986934 | 1271815862 | 1271815862 | 14524262 | 902643984 | 1460801524 |
4 | 1021835442 | 637203998 | 955533625 | 955533625 | 565035872 | 1576219271 | 751624663 |
5 | 1313685521 | 965379446 | 626736785 | 626736785 | 1079577460 | 859869705 | 1289292436 |
1000 | 1292340048 | 294652208 | 1588358191 | 1935299389 | 1404867807 | 1194038620 | 2001042935 |
2000 | 517257756 | 407927492 | 2027766761 | 43898710 | 2022781177 | 563296554 | 1638049143 |
3000 | 1420573800 | 216557927 | 1495802935 | 15165728961 | 2098228799 | 1515829663 | 41578219 |
4000 | 1195033140 | 919639774 | 1360928075 | 923029091 | 1089352213 | 1803857212 | 87938653 |
5000 | 971701120 | 639093944 | 1950421053 | 2129964021 | 262361229 | 1203434155 | 1851047367 |
Приложение ДА
(справочное)
Сведения о соответствии ссылочных международных стандартов национальным стандартам
Таблица ДА.1
Обозначение ссылочного международного стандарта | Степень соответствия | Обозначение и наименование соответствующего национального стандарта |
ISO/IEC 2382-1 | - | * |
ISO 3534-1 | IDT | ГОСТ Р ИСО 3534-1-2019 "Статистические методы. Словарь и условные обозначения. Часть 1. Общие статистические термины и термины, используемые в теории вероятностей" |
ISO 3534-2 | IDT | ГОСТ Р ИСО 3534-2-2019 "Статистические методы. Словарь и условные обозначения. Часть 2. Прикладная статистика" |
* Соответствующий национальный стандарт отсутствует. До его принятия рекомендуется использовать перевод на русский язык данного международного стандарта. Примечание - В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов: - IDT - идентичные стандарты. |
Библиография
[1] | ISO 80000-2 Quantities and units - Part 2: Mathematical signs and symbols to be used in the natural sciences and technology |
_______________ | |
[2] | ISO/IEC 9899 Programming languages - С |
[3] | FERRENBERG A.M., LANDAU D.P. and WONG Y.J. Monte Carlo Simulations: Hidden Errors from "Good" Random Number Generators. Physical Review Letters, 69(23), 1992, p. 3382-3384 |
[4] | GENTLE J.E. Random Number Generation and Monte Carlo Methods, Springer-Verlag, 2003 |
[5] | HERINGA J.R., BL |
[6] | ISHIDA M., SATO Т., SUZUKI K., SHIMADA S. and KAWASE T. Random Number Generator Using a Diode Noise. The Institute of Statistical Mathematics Research Memorandum, Number 968, 2005 |
[7] | |
[8] | KNUTH D.E. Seminumerical Algorithms (The Art of Computer Programming, Volume 2), 3rd. ed., Addison Wesley, 1998 |
[9] | KURITA Y. and MATSUMOTO M. Primitive t-nomials (t = 3, 5) over GF (2) Whose Degree is a Mersenne Exponent u 44497. Mathematics of Computation, 56(194), 1991, p.817-821 |
[10] | L'ECUYER P. Maximally Equidistributed Combined Tausworthe Generators. Mathematics of Computation, 65(213), 1996, p. 203-213 |
[11] | L'ECUYER P. Tables of Maximally-Equidistributed Combined LFSR Generators. Mathematics of Computation, 68(225), 1996, p. 261-269 |
[12] | LEWIS T.G. and PAYNE W.H. Generalized Feedback Shift Register Pseudorandom Number Generators. Journal of the Association for Computing Machinery, 20(3), 1973, p. 456-468 |
[13] | MASSEY J.L. Shift-Register Synthesis and BCH Decoding. IEEE Trans on Information Theory, IT-15 (1), 1969, p.122-127 |
[14] | MATSUMOTO M. and NISHIMURA, T Mersenne Twister: A 623-Dimensionally Equidistributed Uniform Pseudo-Random Number Generator. ACM. Trans. Model. Comput. Simul., 8(1), 1998, p.3-30 |
[15] | VON NEUMANN J. Various Techniques Used in Connection with Random Digits, Monte Carlo Method, Applied Mathematics Series, No.12, U.S. National Bureau of Standards, Washington D.C., 1951, p. 36-38 |
[16] | NIKI N. Machine Generation of Randum Numbers. The Institute of Statistical Mathematics Research Memorandum, Number 969, 2005 |
[17] | NIKI N. Physical Random Number Generator for Personal Computers. The Institute of Statistical Mathematics Research Memorandum, Number 970, 2005 |
[18] | RUEPPEL R.A. Analysis and Design of Stream Ciphers, Springer-Verlag, 1986 |
[19] | TAUSWORTHE R.С Random Numbers Generated by Linear Recurrence Modulo Two. Mathematics of Computation, 19, 1965, p. 201-209 |
[20] | TEZUKA S. and L'ECUYER P. Efficient and Portable Combined Tausworthe Random Number Generators. ACM. Trans. Model. Comput. Simul., 1, 1991, p. 99-112 |
[21] | VATTULAINEN I., |
[22] | VATTULAINEN I., |
[23] | Random Number Generator, The Institute of Statistical Mathematics, http://random.ism.ac.jp/random_e/index.php |
УДК 658.562.012.7:65.012.122:006.354 | ОКС 03.120.30 |
Ключевые слова: псевдослучайное число, физическое случайное число, начальное число, генератор случайных чисел, двоичные числа |
Электронный текст документа
и сверен по:
, 2020