首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模拟现场投票的算法

模拟现场投票的算法
EN

Stack Overflow用户
提问于 2016-02-12 15:42:49
回答 1查看 129关注 0票数 0

我想要写一个模拟现场投票的算法。

观众有4种不同的选择要投票。我设想每个选项a,b,c,d的百分比。

所以我想出了一个算法,它可以给出一个由4个随机数组成的数组,它的总和为100。

代码语言:javascript
复制
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%。

这里有一个用来玩它的小提琴:活民意测验

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-12 16:05:27

为什么不模拟一个恒定的投票率呢?这样,当你计算百分比时,当更多的人已经投票时,变化就会更小。这似乎比改变百分比更有效。我把这些放在一起只是作为一个示范(https://jsfiddle.net/ovkfw577/1/ )

代码语言:javascript
复制
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");
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35366599

复制
相关文章

相似问题

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