需要帮助使用随机数 1-10 填充数组而不使用 Java 中的 0

Need help getting populating array with random numbers 1-10 without using 0 in Java

需要帮助在不使用 0 的情况下使用随机数 1-10 填充数组。 - 创建一个包含 100 个整数的数组。我试过了 int random = r.nextInt(High-Low) + Low;但这会忽略每个数字的数量。

我在作业中需要做的事情:


package arrays;

import java.util.Arrays;
import java.util.Random;

public class Intergers {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Random r = new Random();

        // Create an array of 100 integers.
        int array[] = new int[100];

        int a = 0;

        // Populate the array with random numbers ranging from 1 to 10.
        while (a < 100)
        {
            int random = r.nextInt(10);
            array[a] = random;
            a++;
        }

        //calculate sum of all array elements
        int sum = 0;

         for(int i=0; i < array.length ; i++)
             sum = sum + array[i];

        //calculate average value
         double average = (double)sum/array.length;

        System.out.println("Array: " + Arrays.toString(array));
        // System.out.println("Sum: " + sum);
         //System.out.println("Array Length: " + array.length);
         System.out.println("Average value of array is: " + average);

         // Count the occurrence of each of the ten numbers in the array of 100
         int[] occurrences = new int[10];
         for (int b : array) {
                occurrences[b]++;
            }
         // System.out.println("Array: " + Arrays.toString(occurrences));



          System.out.println(1 + " appeared " + occurrences[0] + " times");
          System.out.println(2 + " appeared " + occurrences[1] + " times");
          System.out.println(3 + " appeared " + occurrences[2] + " times");
          System.out.println(4 + " appeared " + occurrences[3] + " times");
          System.out.println(5 + " appeared " + occurrences[4] + " times");
          System.out.println(6 + " appeared " + occurrences[5] + " times");
          System.out.println(7 + " appeared " + occurrences[6] + " times");
          System.out.println(8 + " appeared " + occurrences[7] + " times");
          System.out.println(9 + " appeared " + occurrences[8] + " times");
          System.out.println(10 + " appeared " + occurrences[9] + " times");




    }
}
int random = r.nextInt(10);

会给你一个介于 0 和 9 之间的伪随机数 int。只需加 1 就可以得到 1 到 10 之间的范围:

int random = r.nextInt(10) + 1;

您还必须调整对 occurrences 数组的处理,以说明数组索引从 0 开始的事实:

     int[] occurrences = new int[10];
     for (int b : array) {
         occurrences[b-1]++;
     }

     for (int i = 0; i < occurences.length; i++) {
         System.out.println(i+1 + " appeared " + occurrences[i] + " times");
     }

我有一个业余的方法。

  1. 创建一个包含 1-9 的数组列表
  2. 创建一个数组来存储 100 个整数
  3. 遍历存储数组并存储数组列表洗牌后的第一项

实施:

    ArrayList<Integer> a = new ArrayList<>();
    for (int i = 1; i < 10; i++) {
        a.add(i);
    }
    int[] store = new int[100];
    for (int i = 1; i < 100; i++) {
        Collections.shuffle(a);            
        store[i] = a.get(0);

    }