用Java生成的随机数

时间:2015-08-31 04:59:19

标签: java arrays random numbers generator

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

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风格吗?我似乎无法绕过它。

4 个答案:

答案 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 MathRandomDataGenerator生成随机数。

  

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();
        }
    }
}