Java随机数生成器显示

时间:2014-10-15 12:02:40

标签: java random arraylist

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

我不得不写一个随机数生成器,它通过数字运行一到五十万次,然后只打印出前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 Number\tFrequency");
        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 Number\tFrequency");

    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个,因为我已经坚持了好几天。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以使用SortedMap将频率存储为密钥,将数字存储为值。然后按照您想要的顺序迭代地图。