我有以下程序:
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中的(数学?)属性?
答案 0 :(得分:1)
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] ***注意:*** 这些是文档中的封闭间隔(即包括端点)。在处理Double
和Float
值时,"如果需要(0,1) - 随机数," article that introduced MT说:"只需丢弃零。"