当前位置:编程学习 > JAVA >>

一个随机数的程序

问题:随机生成50个数字(整数),每个数字的范围是[10,50],统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来,如果某个数字出现次数为0,则不要打印它。打印时按照数字的升序排列。

程序代码如下:
     package com.testing;

import java.util.Random;

public class RandomTest2 {

public static void main(String[] args) {
int[] count = new int[41];

Random random = new Random();

for (int i = 0; i < 50; i++) {
int number = random.nextInt(41) + 10;// [10, 50]

System.out.println(number);

count[number - 10]++;
}

for (int i = 0; i < count.length; i++) {
if (0 == count[i]) {
continue;
}

System.out.println((10 + i) + "出现次数:" + count[i]);
}

int max = count[0];

for (int i = 0; i < count.length; i++) {
if (max < count[i]) {
max = count[i];
}
}

System.out.println("出现的最大次数为:" + max + "次");

for (int i = 0; i < count.length; i++) {
if (max == count[i]) {
System.out.println(i + 10);
}
}


}
}
不知道count[number - 10]++;这行是什么意思,请各位大师不吝赐教。
随机数 --------------------编程问答-------------------- count[number-10]代表number这个数出现的次数.
count[0]代表10出现的次数,count[1]代表11出现的次数,...,count[40]代表50出现的次数.
现在随机值等于number,只需count[number-10]++,表示number出现次数+1. --------------------编程问答-------------------- 以前去PPS面试的时候,人家就问了一个类似的问题吧。
有10W条数据,范围是1到100W
怎么求出所有重复的,要求效率最高 ?
另外楼主其实看这句就应该明白意思的:
System.out.println((10 + i) + "出现次数:" + count[i]); --------------------编程问答--------------------
引用 2 楼 AA5279AA 的回复:
以前去PPS面试的时候,人家就问了一个类似的问题吧。
有10W条数据,范围是1到100W
怎么求出所有重复的,要求效率最高 ?
另外楼主其实看这句就应该明白意思的:
System.out.println((10 + i) + "出现次数:" + count[i]);

你觉得哪种效率最高? --------------------编程问答--------------------
引用 3 楼 yanxing2012 的回复:
引用 2 楼 AA5279AA 的回复:以前去PPS面试的时候,人家就问了一个类似的问题吧。
有10W条数据,范围是1到100W
怎么求出所有重复的,要求效率最高 ?
另外楼主其实看这句就应该明白意思的:
System.out.println((10 + i) + "出现次数:" + count[i]);
你觉得哪种效率最高?

一次遍历就全求出的效率是最高的。
至于方法你可以自己想想,和这个程序用的方法差不多吧。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,