我在将随机数生成器放入数组时遇到麻烦,如何从数组中的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次
答案 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之间的给定数字的次数的计数。
答案 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;
}