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