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

时间:2010-08-05 09:46:45

标签: javascript html variables random

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

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

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

6 个答案:

答案 0 :(得分:8)

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

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];

答案 1 :(得分:4)

就这样做:

var random = Math.floor(Math.random() * 6);
if (random == 5) random = 4;

答案 2 :(得分:2)

答案 3 :(得分:2)

Math.floor(Math.random() * 2) == 0 ? Math.floor(Math.random() * 5) : 4

这里,4有第二随机选择器的50%几率coz,第二随机选择器加起来为20%。

答案 4 :(得分:2)

我喜欢sje397对Paddy所暗示的修正的初步答案:

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

答案 5 :(得分:1)

您需要的技术是使用Shuffle Bag随机发生器。更多详情:http://web.archive.org/web/20111203113141/http://kaioa.com:80/node/53