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.
相关推荐
11. 枚举(Enum):枚举是Java中一种特殊的类,用于定义一组预定义的常量。枚举类型可以拥有方法和字段,可以实现接口,提供更安全的替代常量。 12. Java反射API:反射允许在运行时检查和修改类、接口、构造器和...
总之,JPype是Python开发中一个强大的工具,它为Python打开了Java世界的大门,让开发者可以灵活地利用两种语言的优点,解决特定问题。通过熟练掌握JPype,Python开发者可以拓宽他们的技能范围,提高软件开发的效率和...
异常处理是Java中一种重要的机制,用于处理程序运行时可能出现的错误。Java中的异常处理主要通过`try`、`catch`、`finally`等关键字实现。 - **异常分类** Java中的异常主要分为两类:`Error`和`Exception`。`...
散列表,是一种实现映射接口的散列表,提供了快速的插入和查找操作。 #### Swing 轻巧的,是Java中用于构建图形用户界面的API之一。Swing提供了更现代和灵活的组件集。 #### AWT (Abstract Window Toolkit) 抽象...