javascript - 如何随机化整数变量,并出现某些数字的几率

标签 javascript html variables random

要获得 0 到 4 之间的随机整数(含 0 和 4),我使用以下代码:

var random = Math.floor(Math.random() * 5);

但是我希望数字 4 的选择频率是其他数字的两倍。我该如何获取 0-4(含)之间的随机数,但数字 4 出现的次数是 0-3 的两倍?

最佳答案

我认为最简单的方法是将数字添加到数组中两次:

var nums = [0, 1, 2, 3, 4, 4];
var index = Math.floor(Math.random() * 6);
var random = nums[index];

但是对于更通用的东西,您可能有一个表格:

var nums = [0, 1, 2, 3, 4];
var odds = [0.16667, 0.16667, 0.16667, 0.16667, 0.33333];
var r = Math.random();
var i = 0;
while(r > 0)
  r -= odds[i++];
var random = nums[i];

关于javascript - 如何随机化整数变量,并出现某些数字的几率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3413507/

相关文章:

javascript - 使用 HTML5、javascript 的视频聊天客户端

javascript - 使用 JQuery 或 Javascript 访问 Datalist 标签

javascript - 将数据复制到剪贴板而不选择任何文本

javascript - <Div style=> 不改变字体

java - 用变量替换实例

javascript - 将本地组件文件导入我的 LoginForm 组件时出错

javascript - 如何在循环 div 数组时获取子 img 元素的 src 属性?

php - 引用php代码部分

javascript - 即使在重新加载或关闭选项卡时如何保存 JavaScript 变量?

javascript - 如何修复本地捕获的异常的 "' throw'?