今天CVTE一面,算法题,没有答上来,晚上想了一想
题目
0-9几个数中,8和9出现的概率为90%,其他数出现的概率为10%
分析
let rate = Math.random()为概率0<rate<0.9时,随机出现[8,9]中的一个(其中,8、9出现概率相等)0.9<rate<1时,随机出现[0,7]中的一个(其中,每个整数出现概率相同)代码
function Random(x,y) {
isNaN(x) ? x = 0 : x = parseInt(x);
isNaN(y) ? y = 1 : y = parseInt(y);
let temp = x;
if(x > y){
x = y;
y = temp;
}
return Math.round(Math.random() * ( y - x) + x);
}
function RateRandom() {
let rate = Math.random();
if(rate < 0.9){
return Random(8,9)
}else {
return Random(0,7)
}
}
for(let i = 0; i < 10000; i++){
let res = RateRandom();
res === 9 ? console.log(res) : void(0);
}- 优化思路
RateRandom([8,9,0.9],[0,7,0.1])[8,9]出现概率为0.9,[0,7]出现概率为0.1
RateRandom([8,9,0.9])
RateRandom([0,0,0.3],[1,1,0.5],[2,2,0.2])0,1,2出现概率分别为0.3,0.5,0.2
版权声明:本文为sinat_24227777原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。