【问题标题】:How to fill array with random numbers limited to 0-20 [duplicate]如何用限制为 0-20 的随机数填充数组 [重复]
【发布时间】:2019-04-22 23:23:28
【问题描述】:

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

导入 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次

【问题讨论】:

  • "如何用限制为 0-20 的随机数填充数组" | “我怎样才能从数组中的 0-9 中获得 #20 个随机数” - 它是什么?
  • “我在将随机发生器放入数组时遇到问题” 为什么要这样做?你只需要一个随机生成器,那么为什么要把 it 放在一个数组中呢?您希望将生成的随机 数字 放入数组中,因此首先将 int Random[] = new int [20]; 更改为 int[] numbers = new int[20];
  • 除了其他各种cmets,还需要注意Java风格的约定。 1) 变量的标识符应该从不以大写字母开头。 2) 标识符的名称应该反映变量用于的用途。例如,调用随机数生成器digit 是错误的。它不是一个数字。它是一个随机数生成器。

标签: java arrays random


【解决方案1】:

您需要实际获得一个随机数,并在该范围内。 Java Random 将提供必要的功能,并包括一个返回 0 和 bound 之间的 .nextInt(int 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

【讨论】:

    【解决方案2】:

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

    你需要调用 Random 对象的 nextInt(an integer) 方法。如果你给它 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]);
        }
    

    【讨论】:

    • 如何在确定计数之前打印这 20 个数字?
    • 我添加到答案中
    【解决方案3】:

    你可以试试这个:

    创建一个长度为 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;
    }
    

    【讨论】:

    • 试着解释你的代码,它会帮助人们:)
    猜你喜欢
    • 2015-07-28
    • 1970-01-01
    • 2017-06-22
    • 2014-11-04
    • 2011-01-23
    • 2017-06-04
    • 2021-10-04
    相关资源
    最近更新 更多