Owyn, насколько я понимаю, псевдослучайное число вычисляется по такому алгоритму.
Пусть С1 и С2 - некоторые константы, seed - зерно псевдослучайной последовательности. Тогда тело функции rand() могло бы выглядеть так:
C |
1
2
3
4
5
| int rand()
{
seed = seed*C1 + C2;
return seed;
} |
|
Переменная seed имеет фиксированное значение. Значит, при каждом запуске программы будет генерироваться одна и та же последовательность псевдослучайных чисел.
А srand позволяет инициализировать зерно seed системным временем. Т.е., если ты запишешь в начале программы srand(time(NULL)) (инициализация зерна текущим временем), то можно считать, что при каждом запуске у тебя будет генерироваться уникальная последовательность
Добавлено через 11 минут
Нашел на просторах Интернета:
Генератор ANSI-C был опубликован комиссией как 'пример'. Мы его тоже приводим, но как 'не рекомендованный' для серьезных приложений.
C |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| /* (в модуле stdlib.h) */
#define RAND_MAX 32767
/* "пример" от комитета ANSI-C */
unsigned long next=1;
int rand(void) {
next=next*1103515245+12345;
return((unsigned int)(next/65536)%32768);
}
void srand(unsigned int seed) {
next=seed;
} |
|