"Андрей Богатырев. Хрестоматия по программированию на Си в 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;
return ((unsigned int)(next/65536) % 32768);
}
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; /* номер итерации */