Это скорее всего проблема с машиной, но я не могу понять, что может быть неправильным.C rand() не является случайным даже при посеве
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv) {
srand(time(NULL));
int r1 = rand();
int r2 = rand();
printf("%d %d\n", r1, r2);
}
я скомпилировать выше фрагмент кода с помощью
gcc randd.c
Затем запустить его несколько раз вручную, и первые цифры кажутся невероятно похожи, а вторые кажутся случайным:
1025720610 1435057801
1025737417 1717533050
1025754224 2000008299
1025771031 134999901
1025787838 417475150
Этот первый вызов rand()
кажется сильно связанным со временем и строго увеличивается с течением времени. Любые идеи относительно того, почему это происходит или как его решить?
Это происходит на OSX 10.11
Какая система показывает проблему? 'printf ("% d \ n ", rand());' может показать проблему немного более четко. Я ожидаю получить тот же результат, если программа запускается дважды в течение 1 секунды, но вы получаете (слегка) разные результаты каждый раз. Убедитесь, что код, который вы нам показали, является * точно * кодом, который вы скомпилировали и запустили. –
Возможный дубликат [srand (time (NULL)), генерирующий аналогичные результаты] (http: // stackoverflow.com/questions/6668282/srandtimenull-generate-подобные-результаты) – emlai
@KeithThompson Я опубликовал скриншот с точным кодом и командами, которые я выполняю –