В стандарте установлены методы генерации случайных чисел, подчиняющихся равномерному и другим законам распределения, используемых при применении метода Монте-Карло. В стандарт не включены криптографические методы генерации случайных чисел. Стандарт будет полезен в первую очередь: - научным работникам, технологам и специалистам в области систем управления, использующим статистическое моделирование; - специалистам в области математической статистики, использующим рандомизацию при разработке методов статистического контроля качества продукции и процессов, планирования экспериментов и обработки данных; - математикам, разрабатывающим сложные процедуры оптимизации с использованием метода Монте-Карло; - разработчикам программного обеспечения при создании алгоритмов генерации псевдослучайных чисел.
Идентичен ISO 28640:2010
1 Область применения
2 Нормативные ссылки
3 Термины и определения
4 Условные обозначения и математические операции над двоичными числами
5 Псевдослучайные числа (равномерное распределение)
6 Генерация случайных чисел
Приложение А (справочное) Таблица физических случайных чисел
Приложение В (справочное) Алгоритмы генерации псевдослучайных чисел
Приложение ДА (справочное) Сведения о соответствии ссылочных международных стандартов ссылочным национальным стандартам Российской Федерации
Библиография
40 страниц
Дата введения | 01.12.2013 |
---|---|
Добавлен в базу | 01.10.2014 |
Актуализация | 01.01.2021 |
29.11.2012 | Утвержден | Федеральное агентство по техническому регулированию и метрологии | 1274-ст |
---|---|---|---|
Разработан | АНО НИЦ КД | ||
Издан | Стандартинформ | 2014 г. |
Чтобы бесплатно скачать этот документ в формате PDF, поддержите наш сайт и нажмите кнопку:
ГОСТ
28640
2012
исо
ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ
НАЦИОНАЛЬНЫМ
СТАНДАРТ
РОССИЙСКОЙ
ФЕДЕРАЦИИ
ISO 28640:2010 Random variate generation methods (IDT)
Издание официальное
Москва
Стандартинформ
2014
Предисловие
1 ПОДГОТОВЛЕН Автономной некоммерческой организацией «Научно-исследовательский центр контроля и диагностики технических систем» (АНО «НИЦ КД») на основе собственного аутентичного перевода на русский язык международного стандарта, указанного в пункте 4
2 ВНЕСЕН Техническим комитетом по стандартизации ТК125 «Статистические методы в управлении качеством продукции»
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 29 ноября 2012 г. № 1274-ст
4 Настоящий стандарт идентичен международному стандарту ИСО 28640:2010 «Методы генерации случайных чисел» (ISO 28640:2010 «Random variate generation methods»).
Наименование настоящего стандарта изменено относительно наименования указанного международного стандарта для приведения в соответствие с ГОСТ Р 1.5 (подраздел 3.5).
При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты Российской Федерации, сведения о которых приведены в дополнительном приложении ДА
5 ВВЕДЕН ВПЕРВЫЕ
Правила применения настоящего стандарта установлены в ГОСТР 1.0-2012 (раздел 8). Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок—в ежемесячном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования—на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (gost.ru)
© Стандартинформ, 2014
Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Федерального агентства по техническому регулированию и метрологии
Ь-\а-у\
если а-b < у <а + Ь
Пу) =
6.4 Треугольное распределение
6.4.1 Функция плотности вероятности
0, если у t [a-b,a+b]
где b > 0.
6.4.2 Метод генерации случайной величины
Если стандартные равномерные случайные числа 1/, и U2 независимо генерированы методом, установленным в 6.2.1, то случайное число У, подчиняющееся треугольному распределению, определяют по формуле Y = а + b (Ui + U2 - 1).
6.5 Общее экспоненциальное распределение с параметрами положения и масштаба
6.5.1 Функция плотности вероятности
1
Пу) =
-ехр {-(у~а)1 Ь}, у >а Ь
о, у<а’
где а и b — параметры положения и масштаба экспоненциального распределения соответственно.
6.5.2 Метод генерации случайной величины
Если стандартное равномерное случайное число U генерировано методом, установленным в 6.2.1, то случайное число, соответствующее экспоненциальному распределению, получают по формуле
У = -b\r\(U) + а.
6.6 Нормальное распределение (распределение Гаусса)
6.6.1 Функция плотности вероятности
f(z) = -/==ехр]-—V(z-Ix)2 r>
<j2nc L 2сг J
где ц и о — среднее и стандартное отклонение нормального распределения соответственно. Примечание — Обычно нормальную случайную величину обозначают Z.
6.6.2 Метод Бокса—Мюллера
Если стандартные равномерные случайные числа U1 и U2 независимо генерированы методом, установленным в 6.2.1, то два независимых нормальных случайных числа Zb Z2 получают в соответствии со следующей процедурой
Z., = д + о д/-2ln(1-l/.|) cos (2kU2),
Z2- д + о J-2ln(1-l/.|) sin (2kU2).
Примечание 1 — Поскольку U■, — дискретная величина, то Z2 не подчиняются нормальному распределению в строгом смысле. Например, используя эту процедуру, верхней границей абсолютных значений
псевдослучайных стандартных нормальных величин является м = ^/-2ln(m-1) =^/2lnm ■ Таким образом, если
т = 232, то М ~ 6,6604, а если т = (231 - 1), то М ~ 6,5555. Однако, так как вероятность того, что абсолютные значения случайных величин истинного стандартного нормального распределения, превышающих М, приблизительно равна Ю“10’, это редко создает трудности на практике.
Примечание 2 — При получении U-\, U2 линейным конгруэнтным методом последовательно, U-\ и U2 являются зависимыми, таким образом хвост распределений, полученных Z-| и Z2, может существенно отличаться от истинного нормального распределения.
7
6.7 Гамма-распределение
6.7.1 Функция плотности вероятности
Пу) =
{(у - а)1Ь}с 1 ехр{-(у - а)/Ь}, если у > а
ЬГ(с)
0, если у < а
где а, Ь, с— параметры положения, масштаба и формы соответственно.
6.7.2 Методы генерации случайной величины
6.7.2.1 Общие положения
Алгоритмы приведены для трех ситуаций в зависимости от значения параметра формы с.
6.7.2.2 Алгоритм для с - к (к — целое число)
Используя независимые равномерные случайные числа Uь U2,.... Uk, применяют формулу Y- а-Ып{(1 - l/|)(1 - U2) ... (1 - Uk)}.
Примечание — Этим методом для а = 0 и Ь = 2 может быть получено распределение у2 с четным числом степеней свободы.
6.7.2.3 Алгоритм для с = к + 112 (к— целое число)
Используя стандартное нормальное случайное число Z0 и равномерные случайные числа U ь U2,..., Uk, применяют формулу
У= а + b[z*/2-\n{0-UW-U2)...(UUk)}\.
В случае, когда к - 0, член с логарифмом исчезает.
Примечание — Тем же методом при а = 0 и b = 2 может быть получено распределение у2 с нечетным числом степеней свободы.
6.7.2.4 Приближенный метод для с> 1/3
a) Задают г = с - 1/3, s = Чг , t - г-г 1п(г), р = 1/(3 Vs ) и q - - 3 Vr .
b) Генерируют стандартное нормальное случайное число Z.
c) Если Z<q, то переходят к Ь).
d) Вычисляют Y- (pZ + sf, V = Z2/2 и генерируют U.
e) Если (Y-r)2IY- V<U, выполняют Y:= a +bY (конец).
f) Вычисляют W- Y- rln(Y) -t-V.
g) Если W< U, то выполняют У : = а +ЬУ (конец).
h) Если W> —ln(1,0 - U), то переходят к Ь).
Примечание — Метод основан на преобразовании Уилсона—Хилферти, приводящем у2-распреде-ление к приближенному стандартному нормальному распределению. Точность такого приближения зависит от значения параметра с. Идея преобразования состоит в следующем: абсолютная разность между процентной точкой приближенного и точного распределений всегда меньше 0,2.
6.7.2.5 Точный метод генерации Ченга для с > 1/2
a) Задают д = с-1п4иг = с+ ^/2c-1 .
b) Генерируют стандартные равномерные случайные числа ил и U2.
с) Вычисляют V = cln
1 -и.
,W=c exp(L/1), Z = uf U2, R = q + rV- W.
d) Если R > 4,5Z - (1 + In4,5), то вычисляют У = a + bW (выход).
e) Если R > InZ, то вычисляют У = a + bW (выход).
f) Генерируют стандартные равномерные случайные числа ил и U2 и вычисляют
р = 1/V2с-1 ,q = с- 1п4, г = с + ^20-1 .
8
Если q + prIn
vi-Щ)
> 4,5{ufU2) - (1 +1п4,5),
то У = а + Ьс
0-^1 У
(выход).
6.8 Распределение Вейбулла
6.8.1 Функция распределения вероятности
1-ехр
у-а
Ь
если у>а
0
, если у<а
где а, b и с — параметры положения, масштаба и формы соответственно.
6.8.2 Метод генерации случайной величины
Если стандартные равномерные случайные числа U генерированы методом, установленным в 6.2.1, то случайные числа, соответствующие распределению Вейбулла, получают по формуле
У =а-Ь{1п(1 -U)}Vc.
6.9 Логнормальное распределение
6.9.1 Функция плотности вероятности
1
J2^{(y-a)lb}
exp
1 2 |
если у>а |
если у<а
где а и b — параметры положения и масштаба соответствующего нормального распределения. 6.9.2 Метод генерации случайной величины
Используя стандартные нормальные случайные числа Z, применяют формулу У = а + exp(b-Z)
для получения случайных чисел, соответствующих логнормальному распределению.
6.10 Логистическое распределение 6.10.1 Функция вероятности
_1_
1 + exp{-(y-a)/b}’
—со < у <оо(
где а и b — параметры положения и масштаба соответственно.
6.10.2 Метод генерации случайной величины
Если стандартные равномерные случайные числа U генерированы методом, установленным в 6.2.1, то случайные числа, соответствующие логистическому распределению, получают по формуле
6.11 Многомерное нормальное распределение
Случайные числа Yv У2,Уп, соответствующие л-мерному нормальному распределению со средними ц.|, ц2> ■■■> Рп> дисперсиями и ковариациями (1 < i,j<n), получают, используя взаимно независимые стандартные нормальные случайные числа Zb ...,Zn
У1 = Pi + ац Z,,
9
V*2 “ (J-2 ^21^1 ^22^2 >
Yn = Vn + a„iZi + an2Z2 +... + annZn,
где алл.....ann — константы, вычисляемые до начала генерации в соответствии с процедурой факторизации
Холецкого.
Примечание — о,у (1 < /, j < п) ковариации, о„ — дисперсии у.
a) Для j =1 ац = . ап = <5п1алл (2 < /' < л).
b) Для у = 2, ..., п
|
ajj{j+'[<i<n) |
6.12 Биномиальное распределение 6.12.1 Функция распределения
Если вероятность появления события при каждом испытании равна р, то вероятность того, что это событие произойдет у раз за п испытаний, определяют по формуле
р(у) ~
P^l - РТ~У, У - 0, 1,
где 0 < р < 1.
6.12.2 Методы генерации случайной величины
6.12.2.1 Общие положения
Рассматриваемые в данном разделе методы позволяют получить случайные числа У, соответствующие биномиальному распределению.
6.12.2.2 Прямой метод
Генерируют п стандартных равномерных случайных чисел U. Искомое число У равно количеству чисел U менее р из п полученных чисел U.
6.12.2.3 Метод обратной функции Вычисляют функцию распределения
F(y) = X
к=0
Р*(1-Р)
п-к
У = 0,1.....п.
Для получения случайного числа У генерируют стандартное равномерное случайное число U. Случайное число У является наименьшим значением у, для которого U < F(y).
6.12.2.4 Метод положения
Вычисляют (п + 1) параметров v0, Vi, ..., vn и (п + 1) параметров а0, аь ..., ап.
a) vy = (л + 1)р(у), у = 0, 1, .... л.
b) Составляют набор индексов G таких, для которых соответствующий параметр v удовлетворяет условию vy> 1, и набор индексов S, для которых соответствующий параметр vудовлетворяет условию vy < 1.
c) Для не пустого набора S выполняют операции 1) — 4).
1) Выбирают любой элемент / из G и любой элемент j от S.
2) Устанавливают aj = / и v,- = v(- - (1 - v;).
3) Если V,- < 1, удаляют элемент / из G и перемещают его в S.
4) Удаляют элемент j из S.
Если приведенные выше подготовительные действия выполнены, то двухмерное случайное число У получают, выполняя операции d) — f).
d) Генерируют стандартное равномерное случайное число l/и вычисляют V- (л+1)1/.
e) Вычисляют к - L\/J и и = V- к, где LvJ — целая часть числа V.
f) Если и < vk, то Y - к; в противном случае Y - ак.
6.13 Распределение Пуассона
6.13.1 Функция распределения
Функция распределения Пуассона со средним д имеет вид
Р(У)= угехр(-д), у = 0, 1,2, где д > 0.
6.13.2 Метод, использующий связь с экспоненциальным распределением
Генерируют стандартные равномерные случайные числа Ub U2,.... В качестве У используют максимальное значение п, удовлетворяющее следующему неравенству
-1п{(1-У1)(1-У2)...(1-и„)}<д.
6.13.3 Метод наложения
Сначала выбирают постоянную п, для которой вероятность того, что У>п пренебрежимо мала, например, целая часть числа (д + 6 Vm- ) может быть установлена равной л. Затем применяют процедуру 6.12.2.4, приведенную для биномиального распределения. Однако на сей раз для р(у) должна быть использована функция распределения Пуассона.
Примечание — Этот метод эффективен, когда д имеет значение от 10 до 100.
6.14 Дискретное равномерное распределение
Для генерации дискретных равномерных случайных чисел от М до Nr-битовое двоичное случайное число, полученное в соответствии с рекомендациями 5.1, преобразуют в соответствии со следующими процедурами, где (N-М + 1) не превышает 21.
a) Определяют натуральное число к, удовлетворяющее следующему неравенству:
2kЛ+^ <N-M+ \<2к.
Примечание1 — Величина к — наименьшее натуральное число, удовлетворяющее неравенству к> \og2(N - М + 1).
Пример 1 — Если (N - М + 1) = 100, то к =7, поскольку(26 + 1) = 65 й 100 < 27 = 128.
b) Добавляют 1 к двоичному целому числу, которое сформировано из первых к битов случайного числа, и конвертируют его в десятичное число.
Примечание2 — к- битовое двоичное число Z1Z2Z3Z4...Z^ соответствует десятичному числу 2^_1 Z-, + 2k~2Z2 + 2k~3Z3 + 2^Z4 + ... + Zk.
Пример 2 — Если первые 7 битов числа 1011001, то соответствующим десятичным числом является 89 (64 + 16 + 8 + 1 = 89).
c) Искомое десятичное случайное число — это соответствующее десятичное число плюс (М-1) при отбрасывании чисел более N.
Примечание 3 — Если (N - М + 1) > 2Г, то искомое десятичное случайное число может быть получено конкатенацией двух или большего количества двоичных случайных чисел в одно двоичное случайное число.
Примечание 4 — При использовании линейного конгруэнтного метода для генерации псевдослучайных чисел к не должно быть равным г.
Далее, если (N-M + 1) является десятичным /с-значным натуральным числом и к не является слишком большим, например к меньше 20, может быть использован метод, установленный в 5.2. При этом выполняют процедуру в соответствии с d) и е).
d) Генерируют последовательность десятичных случайных чисел из к цифр, используя процедуру 5.2.
e) Из последовательности случайных чисел, полученной в соответствии с d), удаляют числа более N. Полученная таким образом последовательность является искомой последовательностью десятичных случайных чисел.
11
Приложение А (справочное)
Таблица физических случайных чисел А.1 Таблица случайных чисел
В отличие от псевдослучайных чисел у физических случайных чисел отсутствуют функциональная связь и периодичность. В таблице А.1 приведена последовательность случайных чисел, полученных в результате измерений характеристики физической системы со случайными свойствами.
Таблица А.1 — Таблица физических случайных чисел | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
А.2 Метод генерации физических случайных чисел
Для генерации случайных чисел, приведенных в таблице А.1, использован электрический шум диода. В диоде шумовой сигнал достаточно велик вследствие эффекта лавинного нарастания заряда. Поэтому диод часто используют как источник шума. Был использован лавинно-пролетный диод NC24011). У этого элемента есть источник шума и встроенный усилитель, ширина полосы частот которого составляет 1 ГГц, а амплитуда — 160 мВ.
Методы преобразования шумового сигнала в цифровую форму:
a) аналогово-цифровое преобразование;
b) наблюдение последовательности импульсов с определением количества импульсов в единицу времени;
c) наблюдение последовательности импульсов с определением интервала времени между последовательными импульсами.
Например, для аналогово-цифрового преобразования может быть использован конвертер DAS-41024 У этого оборудования разрешающая способность составляет 8 битов с максимальным периодом отбора данных 64 МГц. Данные для приведенной таблицы были отобраны за 1 МГц. Измерение было выполнено с разрешением 3,91 мВ на цифру, и только низший бит был использован для получения случайного числа.
Поскольку у аналогово-цифрового конверсионного оборудования могут появляться ошибочные значения, гистограммы значений после преобразования не показывают равномерного распределения. Для получения большей равномерности распределения 2 бита были получены из одного и того же источника случайных чисел (0,1) ->■ Случайное число (Rn) = 0,
(1,0) -*■ Случайное число (Rn) = 1,
(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 или больше, его отбрасывают и генерируют следующее случайное число.
^ DAS-4102 — торговая марка продукта, поставляемого Keithley Instruments, Inc. (информация дана только для удобства пользователей настоящего стандарта).
13
Приложение В (справочное)
Алгоритмы генерации псевдослучайных чисел В.1 Текст программы трехпараметрического метода GFSR
Ниже приведен текст программы на языке Си, которая в соответствии с ИСО/МЭК 9899 является примером метода GFSR с параметрами (р, q, w) = (1279, 418, 32) и периодом (21279 - 1). При обращении к функции gfsr () происходит генерация целого числа из интервала от 0 до (232 - 1) включительно. При обращении к функции gfsr_31 () происходит генерация целого числа из интервала от 0 до (231 - 1) включительно. Для обращения к функциям gfsr () и gfsr_31 () необходима единственная инициализация initgfsr (s). Функция init_gfsr (s) выполняет инициализацию при условии, что в качестве начального числа используется 32-битовое целое число без знака [целое число из интервала от 0 до (232 - 1)]. Полученная последовательность обеспечивает 39 независимых серий псевдослучайных чисел, каждая из которых обладает незначительной автокорреляцией, имеет 39-мерное распределение (однородно распределена в 39-мерном гиперкубе) с 32-битовой точностью, и ее функция автокорреляции такова, что значения близкие к нулю появляются через 21274 чисел.
Чтобы получить другую последовательность псевдослучайных чисел, необходимо изменить начальное число s в функции init_gfsr (s). В программе могут быть изменены только константы р, q, w. Значение w должно быть
равно 2 в целой степени в соответствии с длиной слова машины. Значение w, в общем случае, равно 32 или 64 в зависимости от возможностей машины. Например, если длина слова машины 64, постоянную w в программе устанавливают равной 64, а функция gfsr () генерирует целые числа из интервала от 0 до (264 — 1) включительно, в то время как функция gfsr_31 () генерирует целые числа из интервала от 0 до (263 — 1) включительно.
В данной программе предполагается, что длина «беззнакового длинного целого» составляет не меньше 32 бит.
^*************************************************
Текст программы трехпараметрического GFSR на языке Си
************************************************* j
#define Р 1279 #define Q 418
#define W 32 Г значения W должны быть степенью 2 7
static unsigned long state [P] ;
static int state J ;
void init gfsr (unsigned long s)
{
int i, j, k;
static unsigned long x [P] ;
s &= OxffffffffUL;
for (i=0 ; i<P ; i++) { x [i] = s»31 ;
s = 1664525UL * s + 1UL ; s &= OxffffffffUL;
}
for (k=0, i=0 ; i<P ; i++) { state [i] = OUL ; for (j=0 ; j<W ; j++) { state [i] «= 1 ; state [i] |= x [k]; x [k] Л= x [ (k+Q) %P]; k++;
if (k==P) k = 0 ;
}
}
statej = 0 ;
}
unsigned long gfsr (void)
{
int i;
unsigned long *р0, *р1 ;
if (statej >= Р) { statej = 0 ; рО = state ; pi = state + Q ; for (i=0 ; i<(P-Q); i++)
*p0++ л= *p1++ ;
pi = state ; for (; i<P ; i++)
*p0++ л= *p1 ++ ;
}
return state [state_i++] ;
}
Г (W-1 )-битовое целое */ long gfsr_31 (void)
{
return (long) (gfsr() »1);
}
Примечание — Соответствующий текст программы трехпараметрического GFSR на языке BASIC приведен для информации.
г*********************************************
REM Г
REM Текст программы трехпараметрического GFSR на языке BASIC
REM
**********************************************
OPTION BASE О
REM
I*******************************************************************************j
DECLARE NUMERIC P
LET P=1279 !#define P 1279
DECLARE NUMERIC Q
LET Q=418 !#define Q 418
DECLARE NUMERIC W
LET W=32
/* значения W должны быть степенью 2 *1 !#define W 32
DIM state(P)
DECLARE NUMERIC state i
Istatic unsigned long state[P]; Istatic I NT statej;
REM
/*******************************************************************************
FUNCTION init_gfsr(s) !
DECLARE NUMERIC i,j,k DIMx(P)
LET s = And32(s , MskFJ)
FOR i = 0 TO P -1
LET x(i) = SR32U(s , 31)
LET s = Mul32U(1664525 , s) + 1 LET s = And32(s, MskFJ)
NEXT I LET k=0
FOR i = 0 TO P -1 LET state(i) = 0 FOR j=0 TOW-1
LET state(i) = SL32U(state(i), 1)
LET state(i) = Or32(state(i), x(k))
LET x(k) = Xor32(x(k), x (REMAINDER(k +
LET k = k + 1
IF k = P THEN LET k = 0
! void init_gfsr(unsigned long s){
! inti,j, k;
! static unsigned long x[P];
! s &= OxffffffffUL;
! for (i=0; i<P; i++) {
! x[i] = s»31;
! s = 1664525UL * s + 1UL;
! s&= OxffffffffUL;
! }
! for (k=0, i=0; i<P; i++) {
! state[i] = OUL;
! for (j=0; j<W; j++) {
! state[i] «= 1;
! state[i] |= x[k];
,P))) ! x[k] Л= x[(k+Q)%P];
! k++;
! if (k==P) k = 0;
15
NEXT j NEXT I
LET state_i = 0 END FUNCTION REM
'*******************************************************************************
}
state i = 0;
Г
FUNCTION gfsr
DECLARE NUMERIC I DECLARE NUMERIC pO, pi IF statej >= P THEN LET statej = 0 LET pO = 0 LET pi = Q1 FOR i=0 TO P-Q-1
LET state(pO) = Xor32(state(p0) , state(pl)) LET pO = pO + 1 LET pi = PI + 1 NEXT i LET pi = 0 FOR i=i TO P-1
LET state(pO) = Xor32(state(p0) , state(p1)) LET pO = pO + 1 LET pi = PI + 1 NEXTi END IF
LET gfsr = state(state i)
LET state i = state i + 1 END FUNCTION REM
Г
REM /* (\Л/-1)-битовое целое 7 FUNCTION gfsr_31 LET gfsr_31 = SR32U(gfsr, 1)
END FUNCTION
7
unsigned long gfsr(void){ int i;
unsigned long *p0, *p1; if (statej >= P) { statej = 0; pO = state; pi = state + Q1; for (i=0; i<(P-Q); i++)
*p0++ Л= *p1++;
pi = state; for (; i<P; i++)
! *p0++ л= *p1++;
! }
! return state[stateJ++];
! }
'*******************************************************************************
long gfsr_31(void){
return (long)(gfsr()»1);
}
B.2 Текст программы пятипараметрического метода GFSR
Параметры и период данной программы составляют (521, 86, 197, 447, 32) и (2521 - 1). При обращении соответственно к функции gfsr5() происходит генерация целого числа из интервала от 0 до (232 - 1) включительно. При обращении к функции gfsr5_31() происходит генерация целого числа из интервала от 0 до (231 - 1) включительно. Функция init_gfsr5 (s) выполняет инициализацию при условии, что начальное число является 32-битовым целым числом без знака [целое число из интервала от 0до(232- 1)]. До обращения к функции gfsr5 () и gfsr5_31 () необходимо выполнить первоначальную инициацию init_gfsr5 (s). Полученная последовательность имеет 16-мерное распределение (равномерное распределение в 16-мерном гиперкубе) с 32-битовой точностью, а ее функция автокорреляции такова, что период появления близкого к нулю значения составляет 2516.
При необходимости многократного получения наборов случайных чисел для моделирования инициализацию init_gfsr5 (s) необходимо выполнить один раз перед началом моделирования. После каждого повторения содержание таблицы х[Р] размера Р и переменную statej необходимо сохранять и использовать их в качестве начальных значений при следующем повторении.
Если необходима другая последовательность с другим периодом, то значения р, qb q2 и g3 необходимо выбирать из таблицы 1.
/ieieieieie* *************************** *********************************************/
Текст программы пятипараметрического GFSR на языке Си /******************************************************************************
#define Р 521
#define Q1 86 #define Q2 197 #define Q3 447 #define W 32
/* Q1 < Q2 < Q3 7
/* W должно быть степенью 2 7
Static unsigned long state [P] ;\ Static int statej ;
Содержание
1 Область применения....................................... 1
2 Нормативные ссылки....................................... 1
3 Термины и определения...................................... 1
4 Условные обозначения и математические операции над двоичными числами........... 2
5 Псевдослучайные числа (равномерное распределение)...................... 2
6 Генерация случайных чисел................................... 5
Приложение А (справочное) Таблица физических случайных чисел................. 12
Приложение В (справочное) Алгоритмы генерации псевдослучайных чисел............. 14
Приложение ДА (справочное) Сведения о соответствии ссылочных международных стандартов
ссылочным национальным стандартам Российской Федерации........... 34
Библиография........................................... 35
void init_gfsr5 (unsigned long s)
{
int i, j, к ;
static unsigned long x [P] ; s &= OxffffffffUL; for (i=0 ; i<P ; i++) { x [i] = s»31 ;
s = 1664525UL * s + 1UL ; s &= OxffffffffUL;
}
for (k=0, i=0 ; i<P ; i++) { state [i] = OUL ; for (j=0 ; j<W ; j++) { state [i] «= 1 ; state [i] |= x [k];
x [к] л=х [ (k+QI) %P] лх [ (k+Q2) %P] лх [ (k+Q3) %P]; k++;
if (k==P) к = 0 ;
}
}
statej = 0 ;
}
unsigned long gfsr5 (void)
{
int i;
unsigned long *p0, *p1, *p2, *p3 ;
if (state_i >= P) { statej = 0 ; pO = state ; pi = state + Q1 ; p2 = state + Q2 ; p3 = state + Q3 ;
for (1=0 ; i<(P-Q3); i++)
*p0++ л= *p1++ л *p2++ л *p3++; p3 = state ; for (; i<(P-Q2); i++)
*p0++ л= *p1++ л *p2++ л*рЗ++; p2 = state;
for (; i<(P-Q1); i++)
*p0++ л= *p1++ л *p2++ л*рЗ++; pi = state; for (; i<P ; i++)
*p0++ л= *p1++ л*р2++ л*рЗ++;
}
return state [state_i++] ;
}
/* (\Л/-1)-битовое целое */ long gfsr5_31 (void)
{
return (long) (gfsr5()»1);
}
Примечание — Соответствующий текст программы пятипараметрического GFSR на языке BASIC приведен для информации.
17
Введение
В настоящем стандарте установлены типовые алгоритмы, позволяющие генерировать последовательности псевдослучайных чисел, используемых при моделировании реализации случайной величины.
В настоящее время большое количество специалистов, работающих в области математической статистики, используют компьютерное моделирование. Поэтому очень важно, чтобы при этом были использованы псевдослучайные числа, хорошо согласующиеся с выбранным распределением. Настоящий стандарт также позволяет установить правильность рандомизации.
Существует шесть основных направлений использования рандомизации:
- отбор случайной выборки;
- анализ выборочных данных;
- разработка стандартов;
- проверка теоретических результатов;
- проверка того, что предложенная процедура соответствует заявленным свойствам;
- принятие решений в условиях неопределенности.
Приведенные в настоящем стандарте методы и алгоритмы обладают большим периодом повторения и хорошо согласуются с генерируемым законом распределения. При необходимости использования других алгоритмов генерации псевдослучайных чисел до их применения следует убедиться, что период последовательности псевдослучайных чисел является достаточным для решения задачи, а генерируемые псевдослучайные числа хорошо согласуются с моделируемым распределением.
Применяемый в настоящем стандарте международный стандарт разработан Техническим комитетом ИСО/ТС 69 «Применение статистических методов».
IV
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
Статистические методы ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ
Statistical methods. Random variate generation
Дата введения — 2013—12—01
1 Область применения
В настоящем стандарте установлены методы генерации случайных чисел, подчиняющихся равномерному и другим законам распределения, используемых при применении метода Монте-Карло. В настоящий стандарт не включены криптографические методы генерации случайных чисел. Настоящий стандарт будет полезен в первую очередь:
- научным работникам, технологам и специалистам в области систем управления, использующим статистическое моделирование;
- специалистам в области математической статистики, использующим рандомизацию при разработке методов статистического контроля качества продукции и процессов, планирования экспериментов и обработки данных;
- математикам, разрабатывающим сложные процедуры оптимизации с использованием метода Монте-Карло;
- разработчикам программного обеспечения при создании алгоритмов генерации псевдослучайных чисел.
2 Нормативные ссылки
В настоящем стандарте использованы нормативные ссылки на следующие стандарты:
ИСО/МЭК 2382-1 Информационная технология. Словарь. Часть 1. Основные термины (ISO/IEC 2382-1, Information technology — Vocabulary — Part 1: Fundamental terms)
ИСО 3534-1:2006 Статистика. Словарь и условные обозначения. Часть 1. Общие статистические термины и термины, используемые в вероятностных задачах (ISO 3534-1:2006, Statistics — Vocabulary and symbols — Part 1: Probability and general statistical terms)
ИСО 3534-2:2006 Статистика. Словарь и условные обозначения. Часть 2. Прикладная статистика (ISO 3534-2:2006, Statistics — Vocabulary and symbols — Part 2: Applied statistics)
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.1 Условные обозначения
В настоящем стандарте применены обозначения по ИСО/МЭК 2382-1, ИСО 3534-1, ИСО 3534-2, а также следующие условные обозначения и сокращения:
X — целое равномерно распределенное случайное число (целое случайное число, подчиняющееся равномерному распределению);
U — стандартное (из интервала [0,1]) равномерно распределенное случайное число (случайное число из интервала [0,1], подчиняющееся стандартному равномерному распределению);
Z — нормальная случайная величина (случайная величина, подчиняющаяся нормальному распределению);
п — индекс последовательности случайных чисел.
4.2 Математические операции над двоичными числами
В настоящем стандарте использованы следующие математические операции над двоичными числами:
mod (m; к) — остаток от деления целого числа т на целое число к;
т © к — побитовая логическая операция над двоичными целыми числами т и к «исключающее ИЛИ».
Пример 1 — Правила побитовой логической операции Ф 1Ф1=0,
ОФ 1 = 1,
0Ф0 = 0.
Пример побитовой логической операции Ф: 1010 Ф 1100 = 0110;
т Лк— побитовая логическая операция «И» над двоичными целыми числами т\л к.
Пример 2 — Правила побитовой логической операции т л к 1 л 1 = 1,
0 л 1=0,
О л 0 = 0.
Пример побитовой логической операции Л: 1010 Л 1100 = 1000;
т := к — замена значения т на значение /с;
т » к — сдвиг вправо двоичного целого числа тнак битов;
т « к — сдвиг влево двоичного целого числа тнак битов.
5.1 Общие положения
В данном подразделе приведены алгоритмы генерации псевдослучайных чисел, соответствующих равномерному распределению, основанные на методах М-последовательности (см. 5.2).
В приложении А для информации приведен принцип генерации физических случайных чисел.
2
В приложении В приведены тексты компьютерных программ для всех рекомендуемых алгоритмов. Несмотря на то, что линейный конгруэнтный метод не рекомендован для решения сложных задач моделирования методом Монте-Карло, он также включен в приложение В для информации.
5.2 Метод М-последовательности
a) Для натурального числа р и чисел сл, с2,..., ср_ь принимающих значения 0 или 1, определяют рекуррентную формулу
хп+р = S-1 Vi + СР-2 W2 + - + С1 хп+1 + ХП (mod 2) (л = 1,2, 3, ...).
b) Наименьшее положительное целое N, такое, что xn+N - хп для всех значений п называют периодом последовательности. Эту последовательность называют М-последовательностью, период которой составляет (2Р-1).
c) Полином
tp + ср_1 tp-1 + ... + с1( + 1 является характеристическим полиномом для приведенной выше рекуррентной формулы.
Примечание 1 — Необходимым и достаточным условием того, что приведенная в перечислении а) формула может быть использована для генерации М-последовательности является то, что хотя бы одно из начальных чисел х-|, х2.....хр отлично от нуля.
Примечание 2 — Буква М в обозначении М-последовательности является первой буквой английского слова «maximum» (наибольший). Период любой последовательности, сгенерированной по приведенной в перечислении а) рекуррентной формуле, не может быть больше (2р - 1). Поэтому, если есть ряд с периодом (2р - 1), это ряд с наибольшим периодом.
Примечание 3 — При использовании данного метода в качестве характеристического полинома применяют или один из полиномов, приведенных в таблице 1, или другой, более простой полином из справочной литературы, а его коэффициенты используют в формуле перечисления а).
5.3 Пятипараметрический метод
Данный метод использует характеристический полином из 5 членов и позволяет генерировать последовательности w-битовых двоичных целых чисел в соответствии со следующей рекуррентной формулой. Такой алгоритм называют GFSR1) или генератором случайных чисел «сдвиговый регистр с обратной связью».
Хр+р = Xn+i© Xn+q2 © Хп+р^ ® Хп(П -1,2, 3...).
Параметры (р, qb q2, q3, w) и Хь ..., Хр первоначально задают как начальные числа. Примеры параметров р, qb q2, q3 с наибольшим периодом (2Р - 1) приведены в таблице 1.
Таблица 1 — Пятипараметрические характеристические полиномы | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
^ GFSR — Generalized Feedback Shift Register. |
5.4 Комбинированный метод Таусворта
При генерации случайных чисел методом Таусворта используют рекуррентную формулу
хп+р = (xn+q + х„) (mod 2), (л = 0,1,2,...),
где х0, хьх2,... — соответствующая М-последовательность.
При использовании такой М-последовательности последовательность побитовых целых чисел, называемую простой последовательностью Таусворта с параметрами (р, q, t), получают по формуле
— xnf xnf+i... хп^ +и^1, (л — 0, 1,2, ...),
где t — натуральное число взаимно простое с периодом (2Р-1) М-последовательности; w — длина слова, не превышающая р бит.
Период этой последовательности составляет (2Р-1).
Примечание 1—Два целых числа являются взаимно простыми или относительно простыми, если у них нет общих делителей кроме единицы.
Пример — Если в качестве исходного выбран многочлен t2+1 +1, установлены параметры р=4 и q=1 и в приведенной выше рекуррентной формуле заданы начальные числа (х0,х1,х2,х3) = (1,1,1,1), то М-последовательность, полученная в соответствии с рекуррентной формулой, будет иметь вид: 1,1,1,1, 0,0,0,1, 0,0,1,1, 0,1,0,1, 1,1,1,0, .... с периодом (2* - 1) = 15. В случае t = 4 (4 является взаимно простым числом по отношению к 15) и w = 4 простая последовательность Таусворта {Хп} с параметрами (4, 1, 4) имеет вид
Х0 =х0х1х2х3 = 1111 (= 15),
Х1 =х4х5х6х7 = 0001 (= 1), х2 = х8 ха х10 Хц = 0011 (= 3),
Х3 = х12 х13 х14 х0 = 0101 (= 5),
Х4 = х, х2 х3 х4 = 1110 (= 14),
Х5 = х5 х6 х7 х8 = 0010 (= 2).
Простая последовательность Таусворта, полученная таким образом в десятичных числах, имеет вид: 15, 1, 3, 5, 14, 2, 6,11,12, 4, 13, 7, 8, 9,10,15,1,3,..., с периодом (2*-1) = 15.
Если имеется несколько, например, J простых последовательностей Таусворта {Х^}, j = 1,2.....J
с одной и той же длиной слова w, комбинированный метод Таусворта генерирует последовательность псевдослучайных чисел {Хп} как результат побитовой операции «исключающее ИЛИ» при двоичном представлении чисел в этих J последовательностях.
ХП = Х^П ©Х(2)п ® ... ®X<J)n in — 0, 1, 2, ...).
Параметры и начальные числа комбинированной последовательности Таусворта представляют собой комбинацию параметров и начальных чисел каждой простой последовательности Таусворта. Если периоды J простых последовательностей Таусворта являются взаимно простыми, то период комбинированной последовательности Таусворта равен произведению периодов J последовательностей.
Примечание 2 — Данный метод может генерировать последовательности чисел многомерного равномерного распределения. Алгоритм taus88_31(), приведенный в приложении А, позволяет генерировать последовательность 31-битовых целых чисел, комбинируя три простых генератора Таусворта с параметрами (р, q, t) равными (31, 13, 12), (29, 2, 4) и (28, 3, 17) соответственно. Длина периода комбинированной последовательности (231 - 1) (229 - 1) (228 - 1), т. е. приблизительно 288. Другие комбинации предложены в [7] и [8].
5.5 Метод Мерсенна Твистера
Метод Мерсенна Твистера позволяет генерировать последовательность двоичных псевдослучайных целых w-битовых чисел в соответствии со следующей рекуррентной формулой
где р, q, г— целые константы;
а — двоичное w-битовое целое число (формирующее матрицу А);
Хп — w-битовое двоичное целое число;
{Xfn\X'[n^fr) — двоичное целое число, полученное конкатенацией чисел Xfn и Х^п+^, когда первые (w-r) битов взяты изХ„, а последние г битов из (Хп+1) в том же порядке;
А — матрица размера wx w, состоящая из нулей и единиц, определенная посредством а;
Х А — произведение, при вычислении которого сначала выполняют операцию X» 1, если последний бит X равен 0, а затем, когда последний бит X = 1, вычисляют ХА = (X» 1) © а.
(ЗдесьХтакже как и а представляет собой w-мерный вектор, состоящий из нулей и единиц.)
У | |||
У |
-у® |
(у» |
и), |
У |
-у® |
[(у « |
S) А Ь], |
У |
-у® |
[(у « |
f) A С], |
У |
-у® |
(У» |
/). |
Примечание — Необходимый объем памяти для этих вычислений — долов, период — (2pw'r-'\), а эффективность метода Мерсена Твистера выше эффективности метода GFSR. Для улучшения рандомизации первых (w - г) битов можно применить следующий ряд преобразований Хп.
где Ь, с— постоянные маски битов для улучшения рандомизации первых (w-r) битов.
Параметрами этого алгоритма являются (р, q, г, w, а, и, s, t, I, b, с). Начальными числами являются Х2,..., Xq+1 и первые (w-r) битов числа X,.
Заключительное значение у является псевдослучайным числом.
6.1 Введение
В данном разделе приведено описание методов генерации случайных чисел У, соответствующих различным распределениям, при использовании целых случайных чисел X, соответствующих равномерному распределению. При этом использованы следующие обозначения:
F (у) — функция распределения;
f(y) — функция плотности вероятности непрерывного распределения; р(у) — функция дискретного распределения.
6.2 Равномерное распределение
6.2.1 Стандартное равномерное распределение
6.2.1.1 Функция плотности вероятности
ПУ) =
1, если 0 < у < 1 0, если у £ [0,1]
6.2.1.2 Метод генерации случайной величины
Если максимальное значение равномерного случайного целого числа X равно (т-1), для генерации стандартных равномерных случайных чисел необходимо применять следующую формулу
Пример — Для всех w-битовых последовательных целых чисел, генерированных методом, описанным в 5.2 с помощью 5.5, т = 2.
Примечание 1 — Поскольку X принимает дискретные значения, величина U также является дискретной.
Примечание 2 — Величина U никогда не принимает значения 1 и 0. Величина U принимает значение 0,0 только, если X = 0. В случае М-последовательности случайных чисел любой метод генерации может выявить эту особенность.
Примечание 3 — Случайные числа, соответствующие стандартному равномерному распределению, называют стандартными равномерными случайными числами и обозначают U1t U2, ... . Эти числа считают независимыми по отношению друг к другу.
6.2.2 Общий случай равномерного распределения
6.2.2.1 Функция плотности вероятности
И / Ь, если а < у < а + b [О, если у g [а, а + Ь] ’
где Ь > 0.
5
6.2.2.2 Метод генерации случайной величины
Если стандартное равномерное случайное число U получено методом, установленным в 6.2.1.2, то равномерное случайное число должно быть получено в соответствии со следующей формулой Y - bU + а.
6.3 Стандартное бета-распределение 6.3.1 Функция плотности вероятности
Чу)
B(c,d)
если 0 < у < 1
j
если у е [0,1]
1
где В (с,d) = J хс-1(1 - x)d~^dx — бета-функция с параметрами с и d (с > 0, d > 0).
о
6.3.2 Метод Йонка
Если стандартные равномерные случайные числа Ц и U2 независимо генерированы методом, установленным в 6.2.1, то соответствующее стандартному бета-распределению случайное число У получают в соответствии со следующими процедурами.
Если у = и]'с + U2d< 1, то У = il]lc / У ; в противном случае генерируют два новых стандартных
равномерных случайных числа до тех пор, пока неравенство не будет выполнено.
6.3.3 Метод Ченга
Если стандартные равномерные случайные числа Ц и U2 независимо получены методом, установленным в 6.2.1, то случайное число У, соответствующее стандартному бета-распределению, получают в соответствии со следующей процедурой
a) q =
min(c,d), если min(c,d) < 1 I 2cd-(c+d)
I-i-L, в противном случае
b) Вычисляют
V
1
q
Ц
(i-Ц)’
W = сехр(У).
с) Если
{c+d) In
( \ c+d
d + W
+ (c+g)V-ln4 >
Ш (U?U2),
тогда
У =
w
d + W
(выход).
d) В противном случае генерируют Ub U2 и переходят к b).
Если max(c, d) < 1, применяют метод Йонка, в противном случае применяют метод Ченга.
Примечание — Случайные числа, соответствующие бета-распределению, заданному на интервале [а, а + to], получают линейным преобразованием аналогично описанному в 6.2.2.2.
6
1
^ NC2401 — торговая марка продукта, поставляемого Noisecom (информация дана только для удобства пользователей настоящего стандарта).
2