Я хотел заполнить массив случайными числами (я использую cuRand
), но какой сюрприз, когда я заметил, что, хотя я кажусь случайным, каждый раз, когда я запускаю код (я говоря о разных исполнениях), там они, всегда одинаковые числа (не столь случайные). Я продолжал проверять свое семя, и я получал всегда то же значение, которое было 1462615827
. Я попытался сделать его неподписанным и получить то же самое значение. Что может произойти в этом идиллическом коде?время (NULL) возвращает allways одинаковое значение
unsigned long seed1 = unsigned(time(NULL));
printf("%lu\n", seed1);
//The same number is printed every execution
EDIT: Самое странное, что случилось. Я сохранил работу на своем сетевом диске и перезапустил свой компьютер. Это не сработает (я думаю, что материнская плата потерпела крах). Я просто продолжал работать на другом ПК, и семя было прекрасно воспринято. Итак, может это быть аппаратный сбой?
В коде, который вы указали, имеет смысл, что ваши семена одинаковы. 'time' на типичных системах меняется только каждую секунду, и получение текущего времени не займет секунды. Но ваш текст вопроса подсказывает, что вы даже получили то же время после изменения кода, повторной компиляции и повторного запуска. Это было бы очень необычно. Если это действительно так, вы можете отредактировать свой вопрос, чтобы сосредоточиться на этом? – hvd
Я бы проверил значение 'errno'. –
IMO это не подлежит повторению – granmirupa