ГО С Т Р ИСО 24153— 2012
Г
/*выход с проверкой деталей, см.7.4 */
printf(’Vi Объем партии:
printffОбъем выборки:
рллЩ’Дата и время:
рппОС’Количесгво прошедших секунд:
рппМ(’начальное число:
printf(’oT6op выборки: \п"):
for(i = 0; i < n; i++) printf("%8d”. A(i]);
printfCVO:
system("nay3a"):
return 0;
%d\n”, nn);
%d\n", n);
%s\n*. str);
%d\n", S2k);
%d\n*. Seedl);
Й(А == NULL) {
prinlffMaccKe ошибок размещения^");
exit(1):
}
Отбор случайной выборки с возвращением */
ptr = А;
for (i = 0; i < n; i++)
*(ptr++) = 1 + (long)floor(UO *nn);/‘масштабированный выход (1;nn) см. 7.3.9V
B.3 Генератор случайного начального числа
Если требуется ручной ввод начального числа (для проверки, аудита и т. п.), данную функцию вызывают в
соответствии с 7.1.3.
ini SeedGen(void)
{
Г
В. 1.3 Функция генерации случайного начального числаV
Г
Установление даты и времени компьютерной системы см. 7.2.2 а) */
long i. j, k;
struct tm L *ptr:
timej tnow. tref:
/•Время отсчета: 2000-01-01 00:00:00 V
Ltm year = 2000 - 1900:
t.tm_mon = 0; t.tmjnday = 1: t.tm_hour = 0;
t.tm_min = 0; Ltm_sec = 0; t.tm_isdst = 0:
tref = mktime<&t);
tnov/ = time(NULL):
ptr = localtime(&tnow);
strftime(str. 20. "%Y-%m-%d %H:%M:%S*. ptr);
Г
количество дней до компьютерной даты с 2000-01-01 00:00:00 см. 7.2.2 b) V
Г
количество секунд с 2000-01-01 00:00:00 см. 7.2.2 с) V
S2k = (long)difftime(tnow. tref);
Г
генератор квазислучайного начального числа
Seed = S2c;
*/
Г
инициация начального числа см. 7.2.2 d)V
j = S2k-(S2k/100)* 100 + 1;
for (i = 1; i <= j; i++) {
k = Seed / q2;
Seed = a2 *(Seed - k *q2) - k *r2;
if (Seed < 0) Seed ♦= m2:
/ ’пробное значение см. 7.2.2 е)V
Г
см.7.2.4
Ч
Г
RNG #2 см. 7.2.3 Ь)V
Г
RNG #2
cm
. 7.2.3 с)V
Гем.
7.2.3 d)V
Г
}
return Seed:начальное число см. 7.2.5V
Г
функция дополнительно модифицирует глобальные переменные strf] и S2k */
}
20