如何用限制为0-20的随机数填充数组

时间:2019-04-22 23:23:28

标签: java arrays random

我在将随机数生成器放入数组时遇到麻烦,如何从数组中的0-9获得#20个随机数?然后计算这些数字的出现次数。

import java.util.Random;

公共类CountDigits {

public static void main(String[] args) {



    Random digit = new Random(); 

    int Random[] = new int [20];

    int Digits[] = {0,1,2,3,4,5,6,7,8,9}; 

    int Count [] = new int [10]; 


    for ( int i = 0; i < Digits.length; i++) {


        for( int j = 0; j < Random.length; j++) {

            if ( Digits [i] == Random [j] ) 
                Count[i]++; 
        }

    }


    for ( int i = 0; i < Count.length; i++) {

        if ( Count[i] == 1) 
            System.out.printf(" %d  occurs  1 time " , Digits[i] ); 

        else
            System.out.printf("%d occurs %d times" , Digits[i], Count[i]); 

    }
到目前为止的结果:: 0发生20次1发生0次2发生0次3发生0次4发生0次5发生0次6发生0次7发生0次8发生0次9发生0次

3 个答案:

答案 0 :(得分:0)

您忘记为数组元素分配随机数。this answer来查看如何生成随机数。

您需要调用Random对象的nextInt(整数)方法。如果您给它25,它将返回0-24之间的随机整数。

用法示例:

Random rand = new Random();
int random_int = rand.nextInt(50); // --------> Random integer 0-49

以及完整代码

import java.util.Random;

public class Main {

    public static void main(String[] args) {


        Random digit = new Random();

        int Random[] = new int[20];

        for (int x=0;x<20;x++) {
            Random[x] = digit.nextInt(10);
        }

        int Digits[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

        int Count[] = new int[10];


        for (int i = 0; i < Digits.length; i++) {


            for (int j = 0; j < Random.length; j++) {

                if (Digits[i] == Random[j])
                    Count[i]++;
            }

        }


        for (int i = 0; i < Count.length; i++) {

            if (Count[i] == 1)
                System.out.printf(" %d  occurs  1 time ", Digits[i]);

            else
                System.out.printf("%d occurs %d times", Digits[i], Count[i]);

        }
    }
}

输出:

0 occurs 2 times1 occurs 2 times 2  occurs  1 time 3 occurs 3 times4 occurs 6 times 5  occurs  1 time 6 occurs 2 times7 occurs 0 times 8  occurs  1 time 9 occurs 2 times

您可以像这样打印随机数

 for (int x=0;x<20;x++) {
        System.out.println(Random[x]);
    }

答案 1 :(得分:0)

您实际上需要获得一个随机数,并在该范围内。 Java Random将提供必要的功能,并包括一个返回值介于0到.nextInt(int bound)之间的bound

  

公共int nextInt(与int绑定)

     

从该随机数生成器的序列中返回一个伪随机数,该整数值在0(含)和指定值(不含)之间均匀分布。

类似这样:

Random rnd = new Random();

int num = rnd.nextInt(10);  // returns between 0 and 9

鉴于此,您还有另外两个问题:
 -产生20个数字
 -计数

知道可能的条目数在0到9之间,因此很容易使用数组保存计数。

int[] counts = new int[10];  // holds between 0 and 9
for (int i = 0; i < 20; ++i) {
  int num = rnd.nextInt(10);
  counts[num]++;
}

counts数组的输出将给出随机生成0到9之间的给定数字的次数的计数。

查看example here

答案 2 :(得分:0)

您可以尝试以下方法:

创建一个长度为20的int数组,然后使用一个简单的for循环,在该循环中您将生成一个随机数并将其放入数组中

int[] random = new int[20];

for(int i=0;i<20;i++){

    int r = Math.floor(Math.random()*9+1);
    random[i]=r;
}