我想创建一个程序来帮助我处理统计数据,但我从一开始就遇到了问题,我把计算随机数和一维数组的相对频率弄得一团糟。
例如,要生成这些数字:
{3,5,5,2,4,1,3,5,4}
我希望程序告诉我3被重复2次,4重复3次,5重复5次。
我创建了一个类来对这些值()进行排序,以便计算中间值、第一个和第三个四分位数,但我仍然不知道如何找到频率来计算其他值
耽误您时间,实在对不起
PS:不知道这对什么有影响,但我使用的是netbeans
发布于 2013-01-10 20:51:30
发布于 2013-01-10 20:55:49
如果您的数字范围相对较小,则可以选择使用一系列计数器。例如,如果随机数位于间隔[1,5]中,则可以使用大小为5的数组存储和更新频率计数器:
int[] numbers = {3, 5, 5, 2, 4, 1, 3, 5, 4} ;
int[] frequencies = new int[5];
for(int n : numbers)
frequencies[n-1]++;输出数组 (frequencies):
1 1 2 2 3编辑:
此方法可应用于所有范围。例如,假设在范围[500,505]中有数字
int[] frequencies = new int[6];
for(int n : numbers)
frequencies[n-500]++;发布于 2013-01-10 20:55:36
编辑:您可以使用地图存储频率,如下所示:
import java.util.HashMap;
import java.util.Map;
public class Frequency {
public static void main(String[] args) {
int[] nums = { 3, 5, 5, 2, 4, 1, 3, 5, 4 };
int count = 1;
// number,frequency type map.
Map<Integer, Integer> frequencyMap = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
if (nums[i] != -1) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] != -1) {
if (nums[i] == nums[j]) {
// -1 is an indicator that this number is already counted.
// You should replace it such a number which is sure to be not coming in array.
nums[j] = -1;
count++;
}
}
}
frequencyMap.put(nums[i], count);
count = 1;
}
}
for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
System.out.println(" Number :" + entry.getKey()
+ " has frequence :" + entry.getValue());
}
}
}产出:
Number :1 has frequence :1
Number :2 has frequence :1
Number :3 has frequence :2
Number :4 has frequence :2
Number :5 has frequence :3https://stackoverflow.com/questions/14266989
复制相似问题