随机数算法 - 用Java实现

时间:2014-05-05 00:19:23

标签: java algorithm

有人可以建议我使用随机数算法来实现java吗?我不想使用Math.random()函数。

注意:我想在java中编写自己的随机数生成函数;因此,我正在寻找一种可以使用的算法。

1 个答案:

答案 0 :(得分:2)

我认为你的问题实际上与语言无关,而且不应该是特定的java。此外,我认为很容易找到类似这样的信息。查看Pseudorandom number generatorRandom number generation的Wiki页面。如果您正在寻找简单(相对)的内容,请查看XORshift RNG

uint32_t xor128(void) { //A C version from wiki
  static uint32_t x = 123456789;
  static uint32_t y = 362436069;
  static uint32_t z = 521288629;
  static uint32_t w = 88675123;
  uint32_t t;

  t = x ^ (x << 11);
  x = y; y = z; z = w;
  return w = w ^ (w >> 19) ^ (t ^ (t >> 8));
}

或者在Java中:

public class IsNotFour {
    int x = 123456789;
    int y = 362436069;
    int z = 521288629;
    int w = 88675123;

    int xor128() { // A converted C version from wiki
        int t = x ^ (x << 11);
        x = y;
        y = z;
        z = w;
        w = w ^ (w >>> 19) ^ (t ^ (t >>> 8));
        return w; 
    }
}

请注意xyzw一起构成种子。