首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相对频率( java )

问相对频率( java )
EN

Stack Overflow用户
提问于 2013-01-10 20:47:41
回答 4查看 1.7K关注 0票数 2

我想创建一个程序来帮助我处理统计数据,但我从一开始就遇到了问题,我把计算随机数和一维数组的相对频率弄得一团糟。

例如,要生成这些数字:

{3,5,5,2,4,1,3,5,4}

我希望程序告诉我3被重复2次,4重复3次,5重复5次。

我创建了一个类来对这些值(​​)进行排序,以便计算中间值、第一个和第三个四分位数,但我仍然不知道如何找到频率来计算其他值

耽误您时间,实在对不起

PS:不知道这对什么有影响,但我使用的是netbeans

EN

回答 4

Stack Overflow用户

发布于 2013-01-10 20:51:30

您可以肯定地看到这个:收集:频率

如果您没有集合,请先将数组转换为列表:

代码语言:javascript
复制
Collections.frequency(Arrays.asList(yourArray), new Integer(3))
票数 3
EN

Stack Overflow用户

发布于 2013-01-10 20:55:49

如果您的数字范围相对较小,则可以选择使用一系列计数器。例如,如果随机数位于间隔[1,5]中,则可以使用大小为5的数组存储和更新频率计数器:

代码语言:javascript
复制
int[] numbers = {3, 5, 5, 2, 4, 1, 3, 5, 4} ;
int[] frequencies = new int[5];

for(int n : numbers)
    frequencies[n-1]++;

输出数组 (frequencies):

代码语言:javascript
复制
1 1 2 2 3

编辑:

此方法可应用于所有范围。例如,假设在范围[500,505]中有数字

代码语言:javascript
复制
int[] frequencies = new int[6];

for(int n : numbers)
    frequencies[n-500]++;
票数 2
EN

Stack Overflow用户

发布于 2013-01-10 20:55:36

编辑:您可以使用地图存储频率,如下所示:

代码语言:javascript
复制
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());
        }
    }
}

产出:

代码语言:javascript
复制
 Number :1 has frequence :1
 Number :2 has frequence :1
 Number :3 has frequence :2
 Number :4 has frequence :2
 Number :5 has frequence :3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14266989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档