我想(作爲一個笨蛋小白)使用這個alghoritm生成隨機數隨機生成數字?
/* initialize state to random bits */
static unsigned long state[16];
/* init should also reset this to 0 */
static unsigned int index = 0;
/* return 32 bit random number */
unsigned long WELLRNG512(void)
{
unsigned long a, b, c, d;
a = state[index];
c = state[(index+13)&15];
b = a^c^(a<<16)^(c<<15);
c = state[(index+9)&15];
c ^= (c>>11);
a = state[index] = b^c;
d = a^((a<<5)&0xDA442D20UL);
index = (index + 15)&15;
a = state[index];
state[index] = a^b^d^(a<<2)^(b<<18)^(c<<28);
return state[index];
}
但似乎沒有工作(導致每次0)。我在這裏發現它What is a good random number generator for a game?有一個說:「我浪費了一個晚上了解爲什麼我的代碼不工作:在64位機器上,這個代碼處理64位數字!使用sizeof(unsigned long) * 8
」。我有一個64位系統,但我不明白我必須做什麼!我使用stdlib確實更好。
作爲一般規則,您絕對不應該使用您自己無法理解的外部來源的代碼。它是一種可靠的方式,可以將不可預見的錯誤添加到您的程序中,即使您複製的摘錄正常工作。 – Daboyzuk 2013-04-22 08:44:28
借調,@Daboyzuk。在C++中,如果你運行你不明白的代碼,你可以讓其他人完全訪問你機器的裸機。這會打開你的機器到一個受傷的世界。 – 2013-04-22 08:45:52
我在評論中詢問應該使用哪個短語。確保你回頭看看是否/當原評論員回覆。 – Shahbaz 2013-04-22 08:45:52