`
lobin
  • 浏览: 446709 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JVM中一种random实现

 
阅读更多

 

 

long              _rand_seed          = 1;

 

 

void init_random(long initval) {
  _rand_seed = initval;
}

 

 

long random() {
  /* standard, well-known linear congruential random generator with
   * next_rand = (16807*seed) mod (2**31-1)
   * see
   * (1) "Random Number Generators: Good Ones Are Hard to Find",
   *      S.K. Park and K.W. Miller, Communications of the ACM 31:10 (Oct 1988),
   * (2) "Two Fast Implementations of the 'Minimal Standard' Random
   *     Number Generator", David G. Carta, Comm. ACM 33, 1 (Jan 1990), pp. 87-88.
  */
  const long a = 16807;
  const unsigned long m = 2147483647;
  const long q = m / a;        assert(q == 127773, "weird math");
  const long r = m % a;        assert(r == 2836, "weird math");

  // compute az=2^31p+q
  unsigned long lo = a * (long)(_rand_seed & 0xFFFF);
  unsigned long hi = a * (long)((unsigned long)_rand_seed >> 16);
  lo += (hi & 0x7FFF) << 16;

  // if q overflowed, ignore the overflow and increment q
  if (lo > m) {
    lo &= m;
    ++lo;
  }
  lo += hi >> 15;

  // if (p+q) overflowed, ignore the overflow and increment (p+q)
  if (lo > m) {
    lo &= m;
    ++lo;
  }
  return (_rand_seed = lo);
}

 

 

1、"Random Number Generators: Good Ones Are Hard to Find", S.K. Park and K.W. Miller, Communications of the ACM 31:10 (Oct 1988)

2、"Two Fast Implementations of the 'Minimal Standard' Random Number Generator", David G. Carta, Comm. ACM 33, 1 (Jan 1990), pp. 87-88.

0
1
分享到:
评论

相关推荐

    randomJava:一些随机 Java 代码

    11. 枚举(Enum):枚举是Java中一种特殊的类,用于定义一组预定义的常量。枚举类型可以拥有方法和字段,可以实现接口,提供更安全的替代常量。 12. Java反射API:反射允许在运行时检查和修改类、接口、构造器和...

    jpype-0.6.3

    总之,JPype是Python开发中一个强大的工具,它为Python打开了Java世界的大门,让开发者可以灵活地利用两种语言的优点,解决特定问题。通过熟练掌握JPype,Python开发者可以拓宽他们的技能范围,提高软件开发的效率和...

    详细的java基础总结

    异常处理是Java中一种重要的机制,用于处理程序运行时可能出现的错误。Java中的异常处理主要通过`try`、`catch`、`finally`等关键字实现。 - **异常分类** Java中的异常主要分为两类:`Error`和`Exception`。`...

    java词汇解释

    散列表,是一种实现映射接口的散列表,提供了快速的插入和查找操作。 #### Swing 轻巧的,是Java中用于构建图形用户界面的API之一。Swing提供了更现代和灵活的组件集。 #### AWT (Abstract Window Toolkit) 抽象...

Global site tag (gtag.js) - Google Analytics