Javascript 所选数字的百分比概率

Javascript 所选数字的百分比概率,javascript,algorithm,math,Javascript,Algorithm,Math,我正在创造一个幸运的纺车。所以我有数字1到6。 下面是一些代码: 首先我得到一个介于0和7之间的随机数,所以(1,2,3,4,5,6) 我想做的是这样设置百分比: var goldChance = 10; var blueChance = 40; var grayChance = 50; goldChance是数字2和5 blueChance是数字6和3,以及 graychance是数字4和1 因此,当车轮开始旋转时,它应该显示旋转50%的4和1,旋转40%的6和3的数字,只有罕见的2和5应该

我正在创造一个幸运的纺车。所以我有数字1到6。 下面是一些代码:

首先我得到一个介于0和7之间的随机数,所以(1,2,3,4,5,6)

我想做的是这样设置百分比:

var goldChance = 10;
var blueChance = 40;
var grayChance = 50;
goldChance
是数字
2
5

blueChance
是数字
6
3
,以及

graychance
是数字
4
1

因此,当车轮开始旋转时,它应该显示旋转
50%
4
1
,旋转
40%
6
3
的数字,只有罕见的
2
5
应该显示时间的
10%
。这样,如果你幸运的话,你会得到黄金数字

有没有办法将Math.random()设置为包含机会


提前谢谢

不要获取随机数1您可以使用具有概率的数组,并根据随机值进行检查和计数

该函数首先将返回值设置为最后一个可能的索引,并进行迭代,直到剩余的随机值小于实际概率

概率之和必须为1

函数getRandomIndexByProbability(概率){
var r=Math.random(),
指数=概率。长度-1;
概率。一些函数(概率,i){
if(r<概率){
指数=i;
返回true;
}
r-=概率;
});
收益指数;
}
var i,
概率=[0.25,0.05,0.2,0.25,0.05,0.2],
计数={},
指数
forEach(函数(u,i){count[i+1]=0;});
对于(i=0;i<1e6;i++){
索引=getRandomIndexByProbability(概率);
计数[索引+1]+;
}
控制台日志(计数)

.as console wrapper{max height:100%!important;top:0;}
我回答了一个类似的编码难题,生成了一个数字1“…50%的旋转…”50%的旋转?或者50%的旋转次数?为什么不从数组
[1,1,1,4,4,4,3,3,6,6,6,2,5]中获取一个随机数(
Math.random(array_length)
)?是的,正是我想要的。谢谢但是,有没有更好的方法来构造数字,这样我就不会有长数组[1,2,1,2…],但是让我们假设
var gold=10
var blue=40
。@petar1199-20个条目没有那么长。:-)我们可以很容易地用一个更简洁的起点生成数组,比如
var levels={gold:{values:[2,5],percent:10},blue:{values:[3,6],percent:40},gray:{values:[1,4],percent:50}但它似乎使事情变得更复杂而不是更少…是的,我同意。再次感谢T.J.:)
var goldChance = 10;
var blueChance = 40;
var grayChance = 50;
const numbers = [2, 5, 6, 3, 6, 3, 6, 3, 6, 3, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1];
const result = numbers[Math.floor(Math.random() * numbers.length)];
if (n > 0 && n <= 50) {
  return 1;
} else if (n > 50 && n <= 60) {
  return 2;
} else if ...