У меня есть следующий код c:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[]) {
srand(time(NULL));
printf("%d\n", (int)random());
return 0;
}
Насколько я понимаю, это должно печатать разные случайные числа каждый раз, когда я запускаю программу, потому что случайное начальное число зависит от системного времени.
Но каждый раз при запуске программы я получаю один и тот же вывод:
1804289383
Я по-прежнему получаю тот же результат, когда добавляю пользовательские значения в качестве аргумента для srand:
srand(1);
Or
srand(12345);
У кого-нибудь есть идея, почему это происходит? Может быть, это из-за моей операционной системы (Mac OS 10.10.3)? Или компилятор, который я использую (gcc)?
Есть ли простые альтернативы?
random()
? Может быть, он отвязан отsrand()
? Или вы хотели использоватьrand()
? Вам нужноsrandom()
, чтобы установить начальное число дляrandom()
. - person juanchopanza   schedule 13.05.2015srand
устанавливает начальное число дляrand
, а не дляrandom
, для которого естьsrandom
. - person M Oehm   schedule 13.05.2015