在我以前的question我質疑srand(time(NULL))
的便攜性。這個標題爲Using rand()的文件提供了一種「使用時間結果()作爲rand();」的種子的方法。然而,我不明白什麼「只是散列time_t的字節」的意思,也不代表什麼代碼。散列time_t的字節是什麼意思?
unsigned time_seed()
{
time_t now = time (0);
unsigned char *p = (unsigned char *)&now;
unsigned seed = 0;
size_t i;
for (i = 0; i < sizeof now; i++)
seed = seed * (UCHAR_MAX + 2U) + p[i];
return seed;
}
srand (time_seed());
有人可以提供解釋嗎?
http://en.wikipedia.org/wiki/Hash_function – 2014-10-05 21:08:01
警告:完全不清楚此操作是否有效。除非一個類型被唯一地表示,否則散列它的表示是沒有用的。 – 2014-10-05 21:43:19
TBH對於手頭的目的幾乎沒有異議 – MSalters 2014-10-05 23:50:10