如何使用XORShift算法生成 96位随机数。运行应用程序后,每按一次“开始按钮”,它将返回一个不同的96位数字。
XORShift算法代码:
unsigned long xor()
{
static unsigned long y=2463534242;
yˆ=(y<<13); y=(y>>17);
return (yˆ=(y<<5));
}
答案 0 :(得分:2)
此代码应该为每次运行产生不同的值。由于y
为static
,因此它的值最初为2463534242.但由于static
关键字,该值将保留在内存中,直到程序终止(这有点)一个简化的解释,但它应该为这个问题做)。因此,在第一次运行程序后,y
的值与xor()
的结果相同。此y
是y
(种子)的初始值,当下次调用xor()
时,xor()
会在下次运行时生成不同的值。< / p>
答案 1 :(得分:0)
如果我不得不猜测:在运行算法后,您不会重置a
,b
,c
,x
等的值。因此,算法将为每次运行使用不同的初始值,从而产生观察到的行为。