Java中Mersenne Twister的范围是什么?

时间:2017-01-18 04:29:29

标签: java range mersenne-twister

我有以下程序:

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可能为零。这是由于MersenneTwister如何隐含在Java中的(数学?)属性?

1 个答案:

答案 0 :(得分:1)

直接来自the API documentation

  

MersenneTwister(MT19937)是目前已知的最强的均匀伪随机数发生器之一;同时它很快。 分别在闭合间隔[Integer.MIN_VALUE,Integer.MAX_VALUE]和[Long.MIN_VALUE,Long.MAX_VALUE]中生成均匀分布的int和long,以及float' s和双开的单位间隔(分别为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说:"只需丢弃零。"