我是编程新手,刚刚开始学习数组,并且做得很好,直到我得到一个存储随机数的数组。下面的代码行是最令我困惑的代码。
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风格吗?我似乎无法绕过它。
答案 0 :(得分:6)
这个例程可以分解为这个
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;
)中。
答案 1 :(得分:3)
randomNumbers.nextInt(6)
生成一个0-5的数字;添加一个使它成为1-6。 ++
增加结果数组中与所选数字对应的值。
如果随机数分布均匀,则应该有一个大约有100万的数组。
答案 2 :(得分:0)
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);
}
}
答案 3 :(得分:-2)
您还可以尝试Apache Commons Math库RandomDataGenerator生成随机数。
Commons Math随机软件包包含
的实用程序生成随机数,生成随机的随机向量 字符串生成加密安全的随机序列 生成随机样本和排列的数字或字符串 分析输入文件中的值的分布并生成 价值观&#34;喜欢&#34;生成分组数据的文件中的值 频率分布或直方图
实施例
import java.io.*;
import java.net.*;
/**
* Created by admin on 22/8/15.
*/
public class Hello {
public static void main(String [] args)
{
try
{
URL url = new URL("http://www.google.com");
URLConnection urlConnection = url.openConnection();
HttpURLConnection connection = null;
if(urlConnection instanceof HttpURLConnection)
{
connection = (HttpURLConnection) urlConnection;
}
else
{
System.out.println("Please enter an HTTP URL.");
return;
}
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String urlString = "";
String current;
while((current = in.readLine()) != null)
{
urlString += current;
}
System.out.println(urlString);
}catch(IOException e)
{
e.printStackTrace();
}
}
}