什么是随机数生成的快速模数替换?

时间:2011-01-12 12:56:53

标签: random modulo

目前我正在使用非常快的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 区间内不同数字概率的小不等式是可以接受的。

1 个答案:

答案 0 :(得分:0)

此链接说明了如何使用按位掩码进行模数:

http://www.rohitab.com/discuss/topic/29723-modulus-with-bitwise-masks/