目前我正在使用非常快的XorShift算法:
inline uint r() {
static uint y = 2463534242u; // seed
y ^= (y<<13);
y ^= (y>>17);
y ^= (y<<5);
return y;
}
现在我想从interval [0,n)生成一个整数。我当然可以这样做:
r() % n
但这很慢。有更快的方法吗?
PS 区间内不同数字概率的小不等式是可以接受的。
答案 0 :(得分:0)
此链接说明了如何使用按位掩码进行模数:
http://www.rohitab.com/discuss/topic/29723-modulus-with-bitwise-masks/