如何用随机数填充数组,限制为0-20 [重复]

问题描述 投票:-2回答:3

这个问题在这里已有答案:

我在将随机生成器放入数组时遇到问题,如何从数组中的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次

java arrays random
3个回答
0
投票

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

public int nextInt(int bound)

返回从此随机数生成器的序列中提取的伪随机,均匀分布的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


0
投票

您忘了为数组elements.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]);
    }

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.