繁体   English   中英

用Java生成的随机数

[英]Random Number Generating in Java

我是编程新手,刚刚开始学习数组,并且做得很好,直到我得到一个存储随机数的数组。 下面的代码行是最令我困惑的代码。

for (int roll = 1; roll <=6000000; roll++)
     ++frequency[1 + randomNumbers.nextInt(6)];

在此之前,我导入了Random类,并创建了一个名为randomNumbers的新对象,并将变量frequency声明为具有7个整数的数组。 我正在阅读的这本书告诉我,上面的这一行掷了600万次,并使用模具值作为频率指数。

据我所知,这是在迭代中经历的600万次它是否在它每次在身体中所说的,但是我没有在身体中看到它将任何变量设置为等于随机数。 我认为我遗漏的最重要的事情是增加频率[]意味着什么,因为据我所知,在括号内有一个1到6之间的随机数被加到1.所以600万次迭代应该按频率[ 1]通过频率[7]如果它有可能发生,但即使它通过它我也看不出它是如何设置任何等于那些数组的东西。

有人可以一步一步向我解释这行代码barney风格吗? 我似乎无法绕过它。

这个例程可以分解为这个

for (int roll = 1; roll <=6000000; roll++) {
    int the_random_number = 1 + randomNumbers.nextInt(6);
    frequency[the_random_number] = frequency[the_random_number] + 1;
}

代码randomNumbers.nextInt(6)返回0到5之间的数字。例如,如果它返回3,则添加1以使the_random_number变为4.之后,将频率出现4增加1并将其存储在frequency数组( frequency[4] = frequency[4] + 1; )。

randomNumbers.nextInt(6)生成0-5的数字; 添加一个使它成为1-6。 ++增加结果数组中与所选数字对应的值。

如果随机数分布是偶数,则应该有一个大约有100万的数组。

Use these sample as your reference:
import java.util.Random;

/** Generate 10 random integers in the range 0..99. */
public final class RandomInteger {

public static final void main(String... aArgs){
log("Generating 10 random integers in range 0..99.");

//note a single Random object is reused here
Random randomGenerator = new Random();
for (int idx = 1; idx <= 10; ++idx){
  int randomInt = randomGenerator.nextInt(100);
  log("Generated : " + randomInt);
}

log("Done.");
}

private static void log(String aMessage){
System.out.println(aMessage);
}
}

您还可以尝试使用Apache Commons Math库的RandomDataGenerator来生成随机数。

Commons Math随机软件包包括实用工具

生成随机数生成随机数,生成随机字符串,生成随机数字或字符串的加密安全序列,生成随机样本和排列,分析输入文件中值的分布,并生成值“类似”文件生成数据中的值,用于分组频率分布或直方图

RandomDataGenerator randomData = new RandomDataGenerator(); 
randomData.reSeedSecure(1000);
for (int i = 0; i < 1000; i++) {
    value = randomData.nextSecureLong(1, 1000000);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM