私は(バングラー初心者として)このアルゴリズムを使用して乱数を生成しようとしています
/* 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です)。ここで見つけました ゲームに適した乱数ジェネレーターとは何ですか? コメントには、「コードが機能しない理由を理解するために一晩を無駄にしています。64ビットマシンでは、このコードは64ビット番号を生成します!使用しますsizeof(unsigned long) * 8
」. 64ビットシステムを持っていますが、何をしなければならないのかわかりません! stdlib を使用する方が確実に優れています。