2
目前我使用的是非常快的XorShift算法:什麼是隨機數生成的快速模取代?
inline uint r() {
static uint y = 2463534242u; // seed
y ^= (y<<13);
y ^= (y>>17);
y ^= (y<<5);
return y;
}
現在我想從生成區間[0,正整數)。當然我可以這樣做:
r() % n
但是這很慢。有更快的方法嗎?
PS 區間內不同數字概率的小不等式是可以接受的。
這xorshift`r`功能長得挺像http://xkcd.com/221/。 – user562374 2011-01-12 13:28:37
你如何定義緩慢? DIV指令可用於此目的,它在現代x86(i7)上運行26個時鐘週期,在Core2上運行40個時鐘週期。 – 2011-01-12 13:35:57