说某事的机会百分比?

新手上路,请多包涵

我想写一个程序:

  • 80% 的时间会说 sendMessage("hi");
  • 5% 的时间会说 sendMessage("bye");
  • 15% 的时间会说 sendMessage("Test");

它必须与 Math.random() 做些什么吗?喜欢

if (Math.random() * 100 < 80) {
  sendMessage("hi");
}
else if (Math.random() * 100 < 5) {
  sendMessage("bye");
}

原文由 0x29A 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 189
2 个回答

是的, Math.random() 是实现这一目标的绝佳方式。你想要做的是计算一个随机数,然后根据它做出决定:

 var d = Math.random();
if (d < 0.5)
    // 50% chance of being here
else if (d < 0.7)
    // 20% chance of being here
else
    // 30% chance of being here

这样你就不会错过任何可能性。

原文由 Ernest Friedman-Hill 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于这种情况,通常最好生成 一个 随机数并根据该数字选择案例,如下所示:

 int foo = Math.random() * 100;
if (foo < 80) // 0-79
    sendMessage("hi");
else if (foo < 85) // 80-84
    sendMessage("bye");
else // 85-99
    sendMessage("test");

原文由 sarnold 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏