ГО С Т Р ИСО 24153— 2012
Приложение В
(справочное)
Текст программы генерации случайных чисел
В.1 Краткое описание
Приведенные программы написаны на языке программирования Си (см. [6]) и соответствуют алгоритмам,
описанным в разделе 7. Ссылки на соответствующие подразделы раздела 7 включены в качестве комментариев в
текст программ, что позволяет составить программу на другом языке программирования.
В.2 Демонстрационная программа
#include <stdio.h>
«indude <stdlib.h>
«include <time.h>
«include <math.h>
/•Прототипы функций V
int SeedGen(void):
double U(void):
/* Глобальные переменные
Ч
long ij. Seed, Seed2, S2K;
char str[20J:
const long m1=2147483563, m2=2147483399, mm1=2147483562.
a 1=40014. a2=40692. q1=53668, q2=52774. r1=12211. r2=3791:
const double ufac=4,6566130573917691e-10;
/* Демонстрационная программа
Ч
int main(void)
{
long i. nn. n. Seedl. *A. ’ptr,
char yn{4];
time_t tnow:
system(’CLS’):
рппК{"Де»(еонстрационная программа для ISO 24153: -\n"),
рппКСПроцедуры рандомизации и отбора случайной выборки (Раздел 7)\п“);
printf(’Vi Алгоритмы генерации случайного числа и начального числа. \п"):
рмпК("используемые для отбора единственной выборки \п");
printf("06beM партии:
scan((*%d". &лп);
рппКС’Обьем выборки:*);
scanf(*%d". &п);
printfCVi Ручной ввод (Y/N): ");
scanf("%s”. уп);
if(yn(0J ==
У
|| yn(0J == ’у’) {
Г
ручной ввод начального числа7
printfOn Введите целое из интервала от 1до 2147483398 включительно: ");
scanf(’%d", SSeed):
Seedl = Seed;
Г
сохранение начального числа, см. 7.1.3V
S2k = 0;
tnow = time(NULL):
strftime(str, 20. ,,%Y-%m-%d %H:%M:%S", »ocaltin>e(&tnow)):
Г
функция вызова начального числа, см. 7
2 Ч
Г
сохранение начального числа, см. 7.2.5 V
}
else {
Seed = SeedGen():
Seedl = Seed:
}
Seed2 = Seed:
Г
RNG Параметры функции начального числаV
ij = -1:Л RNG Параметр функции инициализацииV
Г
создание массива для выборочных значений 7
А = (long *) саНос(п. sizeof(toog));
19