算法需要帮助

时间:2013-03-26 23:35:29

标签: java algorithm math

我在为我的问题考虑算法时遇到了一些麻烦。我会尽力解释我能做的最好的事情。这只是一个例子。

所以说1000%的人中有3%点击了链接。

所以我需要一种能够在1000个视图上随机传播点击的算法。

很容易均匀地传播它,例如:1000 * .03 = 30,所以每30个视图有人会点击一个链接。

EG:

For (i = 0; i<1000; i++) {
if(i % 30 == 0);
click()
}

3 个答案:

答案 0 :(得分:4)

您实际需要30次点击,还是只需要平均每千次提供30次点击的统计分布?如果您只需要统计分布,那么只需if (Math.random() < 0.03)即可。如果您只需要30次点击,那么最简单的方法是在0到999之间选择30个随机数,确保没有重复项,然后点击这些索引。

答案 1 :(得分:2)

您还可以创建一个包含1000个整数的数组,将其中的30个初始化为1,将其余的970初始化为0,然后随机shuffle数组,并使用array[index from 0 to 999]查看是否需要单击。

答案 2 :(得分:1)

List<Boolean> wasclicked = new ArrayList<Boolean>();
for (int i = 0; i < NUM_CLICKS * 0.03; i++) {
    wasclicked.add(true);
}
for (int i = 0; i < NUM_CLICKS * 0.97; i++) {
    wasclicked.add(false)
}
Collections.shuffle(wasclicked);

你现在有一个随机的布尔列表,其中正好有3%是真的。