Java随机数生成器显示



我为课程编写的一些代码遇到了一些麻烦。

我必须写一个随机数生成器,它对数字进行1到50、10000次运算,然后只打印出出现次数最多的前15个数字。除了打印出前15名的最高成绩外,我把所有事情都做对了。

这是我的完整代码块

package section4;
import java.util.Random;
public class Lottery {
    public static void main(String[] args) {
        Random rand = new Random();
        int freq[] = new int[51];
        for(int roll = 1; roll<1000000;roll++){
            ++freq[1+rand.nextInt(50)];
        }
        System.out.println("Lottery NumbertFrequency");
        for(int face = 0; face<freq.length ;face++){
            System.out.println(face+"t"+freq[face]);
        }
    }
}

我尝试过使用ArrayList。

我首先创建了ArrayList,然后将face和freq[face]添加到ArrayList中,然后打印ArrayList的元素。我把它累坏了,因为我认为我错了。

package section4;
import java.util.ArrayList;
import java.util.Random;
public class Lottery {
public static void main(String[] args) {
    Random rand = new Random();
    int freq[] = new int[51];

    ArrayList<Integer> top = new ArrayList<Integer>(15);
    for(int roll = 1; roll<1000000;roll++){
        ++freq[1+rand.nextInt(50)];
    }
    System.out.println("Lottery NumbertFrequency");
    for(int face = 0; face<freq.length ;face++){
        top.add(face);
        top.add(freq[face]);
        System.out.println(top);            
    }
}
}

我也尝试过更改"For Statement",但我也知道,将其更改为我只做的"告诉"编译器从0-15运行,而不是整个50。

for(int face = 0; face< 15 ;face++){}

有人能帮我吗,我怎么能只打印出15个最高的,因为我已经坚持了好几天了。

int[] b =Arrays.copyOf(freq, 5);    
 Arrays.sort(b);
    for(int i = 0 ; i < 15 ; i++){
      System.out.println(b[50 - i]);
    }

您可以使用SortedMap将频率存储为Key,将数字存储为Value。然后,只需按照您想要的顺序在地图上迭代即可。

最新更新