我在为我的问题考虑算法时遇到了一些麻烦。我会尽力解释我能做的最好的事情。这只是一个例子。
所以说1000%的人中有3%点击了链接。
所以我需要一种能够在1000个视图上随机传播点击的算法。
很容易均匀地传播它,例如:1000 * .03 = 30,所以每30个视图有人会点击一个链接。
EG:
For (i = 0; i<1000; i++) {
if(i % 30 == 0);
click()
}
答案 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%是真的。