"Андрей Богатырев. Хрестоматия по программированию на Си в Unix" - читать интересную книгу автораэтого вам придется написать генератор случайных чисел. Си предоставляет стандартный
датчик ЦЕЛЫХ равномерно распределенных псевдослучайных чисел: если вы хотите получить целое число из интервала [A..B], используйте int x = A + rand() % (B+1-A); Чтобы получать разные последовательности следует задавать некий начальный параметр последовательности (это называется "рандомизация") при помощи srand( число ); /* лучше нечетное */ Чтобы повторить одну и ту же последовательность случайных чисел несколько раз, вы должны поступать так: srand(NBEG); x=rand(); ... ; x=rand(); /* и повторить все сначала */ srand(NBEG); x=rand(); ... ; x=rand(); Используемый метод получения случайных чисел таков: А. Богатырев, 1992-95 - 14 - Си в UNIX static unsigned long int next = 1L; int rand(){ next = next * 1103515245 + 12345; } void srand(seed) unsigned int seed; { next = seed; } Для рандомизации часто пользуются таким приемом: char t[sizeof(long)]; time(t); srand(t[0] + t[1] + t[2] + t[3] + getpid()); 1.39. Напишите функцию вычисления определенного интеграла по методу Симпсона. /*#!/bin/cc $* -lm * Вычисление интеграла по методу Симпсона */ #include extern double integral(), sin(), fabs(); #define PI 3.141593 double myf(x) double x; { return sin(x / 2.0); } int niter; /* номер итерации */ |
|
|