dzm*_*dzm 2 javascript random node.js weighted
我有一个每 100 毫秒运行一次的 Node.js 进程 (setInterval)。我想每隔 x 时间段执行某些操作。例如,2% 的时间做 X,10% 的时间做 Y,等等。
\n\n现在,我基本上是这样做的:
\n\nvar rand = Math.floor(Math.random() * (1000 + 1));\n\nif(rand > 900) { // Do something }\n\nif(rand > 950) { // Do something }\nRun Code Online (Sandbox Code Playgroud)\n\n问题是它非常不一致。您希望if(rand > 900)至少有接近 10% 的时间,但有时可能连续 10 倍或根本没有。
如果我们假设 100 毫秒间隔是固定的,有人会建议更好的解决方案吗?该解决方案会更准确。
\n\n谢谢你!
\n\n编辑:根据Dredel博士的评论:
\n\nvar count = 0;\nsetInterval(function(){\n\n if(count++ % 4 == 0) {\n console.log('25% of the time');\n }\n\n}, 100);\xe2\x80\x8b\nRun Code Online (Sandbox Code Playgroud)\n
如果你的间隔是固定的,我会将你的邮票四舍五入到最接近的百位,然后使用与你的需求相关的那些部分...... 100和200而不是300-1000来代表2%。
如果您可以使用计数器,那么这是更明显的方法。
if(myCounter++ % 4 == 0)
//this happens 25 percent of the time
Run Code Online (Sandbox Code Playgroud)
正如埃米尔指出的那样,概率在这里并不是正确的方法,而且我不觉得你已经与它结婚了......听起来你正在使用它,因为你没有看到更好的方法来激怒x% 的时间会发生某事。如果我们误解了您的意思,您需要更详细地解释为什么在这里使用赔率。
| 归档时间: |
|
| 查看次数: |
2682 次 |
| 最近记录: |