Javascript 所选数字的百分比概率
我正在创造一个幸运的纺车。所以我有数字1到6。 下面是一些代码: 首先我得到一个介于0和7之间的随机数,所以(1,2,3,4,5,6) 我想做的是这样设置百分比: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应该
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 ...