【问题标题】:What is the range of the Mersenne Twister in Java? [closed]Java 中的 Mersenne Twister 的范围是多少? [关闭]
【发布时间】:2017-01-18 04:29:29
【问题描述】:

我有以下程序:

import java.util.*;
import cern.jet.random.engine.MersenneTwister;
import cern.jet.random.engine.RandomEngine;

public class printy{
    static RandomEngine val = new MersenneTwister( (int)System.currentTimeMillis() );
    System.out.println(var.toString());
}

var 的范围是多少?它是一个多大的整数?它永远是0吗?

根据文档,种子不能为 0,但随机 INT 可以为零。这是由于 Java 中隐含 MersenneTwister 的一个(数学?)属性?

【问题讨论】:

标签: java range mersenne-twister


【解决方案1】:

直接来自the API documentation

MersenneTwister (MT19937) 是迄今为止已知的最强的均匀伪随机数生成器之一;同时它很快。 分别在闭合区间 [Integer.MIN_VALUE,Integer.MAX_VALUE] 和 [Long.MIN_VALUE,Long.MAX_VALUE] 中生成均匀分布的 int 和 long,以及在开放单位区间 (0.0f, 1.0f) 和 (0.0,1.0)。

具体...

  • Integers: [-2147483648, 2147483647]
  • Long: [-9223372036854775808, 9223372036854775807]
  • Float: [0.0f, 1.0f]
  • Double: [0.0, 1.0]

***注意:*** 根据文档,这些是封闭间隔(即包括端点)。在处理 DoubleFloat 值时,“如果需要 (0,1]-随机数”,article that introduced MT 会说:“只需丢弃零即可。”

【讨论】:

  • 我明白了。种子不能为 0,但随机 INT 可以为零。这部分是我的困惑。 The seed can be any 32-bit integer except 0.
  • 您应该更新您的问题以反映这种混淆。否则,你就会成为一个不想阅读文档的人。
  • 谢谢。我正在尝试删除问题。
猜你喜欢
  • 2013-06-11
  • 2014-02-22
  • 2011-01-28
  • 2013-01-30
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
相关资源
最近更新 更多