我想要写一个模拟现场投票的算法。
观众有4种不同的选择要投票。我设想每个选项a,b,c,d的百分比。
所以我想出了一个算法,它可以给出一个由4个随机数组成的数组,它的总和为100。
dataset = [];
a = randombetween(0, max);
b = randombetween(0, max - a);
c = randombetween(0, max - a - b);
d = max - a - b - c;
dataset.push(a, b, c, d);
shuffle(dataset);此代码每2秒执行一次,以更新投票结果。
为了使我的算法更现实,我希望改变是更渐进的。我想要创建一个非官方随机结果,然后逐步增加/减少投票结果。假设每次更新的投票结果增加/减少不超过5%。
这里有一个用来玩它的小提琴:活民意测验
发布于 2016-02-12 16:05:27
为什么不模拟一个恒定的投票率呢?这样,当你计算百分比时,当更多的人已经投票时,变化就会更小。这似乎比改变百分比更有效。我把这些放在一起只是作为一个示范(https://jsfiddle.net/ovkfw577/1/ )
var votes = [0,0,0,0];
var dataset = [0,0,0,0];
var dataSize = 4;
var voteRate = 10;
// Algorithm to simulate the further voting process
var updateData = function() {
var total = 0;
dataset = [0,0,0,0];
// add random amount of votes
for(i=0; i < dataSize; i++) {
var randomVotes = randombetween(0,voteRate);
votes[i] += randomVotes;
total += votes[i];
}
// calculate percentages
for(i=0; i < dataSize; i++) {
dataset[i] = votes[i] / total * 100;
}
// so poll bars don't completely stall later on.
// not entirely necessary, but helps polling
// appear more active.
voteRate *= 1.2;
drawVis();
$("svg").fadeIn("slow");
};https://stackoverflow.com/questions/35366599
复制相似问题