[英]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.