如何随机化整数变量,出现某些数字的赔率

Dav*_*vid 0 html javascript random variables

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

var random = Math.floor(Math.random() * 5);
Run Code Online (Sandbox Code Playgroud)

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

sje*_*397 8

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

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

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

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];
Run Code Online (Sandbox Code Playgroud)

  • 你实际上没有使用nums数组? (2认同)