我想编写一个算法来模拟实时投票。
观众有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秒执行一次,以更新投票结果。
为了使我的算法更逼真,我希望更改更加渐进。 我想创建一个inicial随机结果,然后逐渐增加/减少民意调查结果。让我们说一个民意调查结果不应该每次更新增加/减少超过5%。
这是一个玩弄它的小提琴:Live Poll
答案 0 :(得分:1)
为什么不模拟提交的固定投票率?这样,当您计算百分比时,当更多人投票时,更改将会更小。这似乎比改变百分比更好。我把它扔在一起就像一个示范(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");
};