EXCEL中,想让随机数按一定概率生成,怎么做?

发布网友 发布时间:2022-04-22 21:11

我来回答

3个回答

懂视网 时间:2022-05-15 09:07

这次给大家带来按概率生成数字,按概率生成数字的注意事项有哪些,下面就是实战案例,一起来看一下。

js按照配置的概率生成,概率规则如下:
1------------50%

2------------30%

3------------15%

5------------5%

简单的代码

function myRandom() {
 var rand = Math.random();
 if (rand < .5) return 1;
 if (rand < .8) return 2;
 if (rand < .95) return 3;
 return 5;
}

复杂点的

function prizeRand(oArr) {
 var sum = 0; // 总和
 var rand = 0; // 每次循环产生的随机数
 var result = 0; // 返回的对象的key
 console.log(oArr);
 // 计算总和
 for (var i in oArr) {
 sum += oArr[i][0];
 }
 // 思路就是如果设置的数落在随机数内,则返回,否则减去本次的数
 for (var i in oArr) {
 rand = Math.floor(Math.random()*sum + 1);
 if (oArr[i][0] >= rand) {
 result = oArr[i][0];
 break;
 } else {
 sum -= oArr[i][0];
 }
 }
 return result;
}
var oArr = {'5':[5, 'Mac'], '3':[15, 'iPhone'], '2':[30, 'iPad'], '1':[50, 'iWatch']};
console.log(prizeRand(oArr));

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:



热心网友 时间:2022-05-15 06:15

=IF(INT(RAND()*100)+1<88,INT(RAND()*8),IF(INT(RAND()*100)+1<97,INT(RAND()*3)+9,INT(RAND()*2)+13))

解释:先生成一个1-100的数,如果这个数小于88,那么满足概率87%,就返回一个0-8的数,依次类推。

测试结果:

10个数,出了2个大于8的,符合该规则的随机性。

热心网友 时间:2022-05-15 07:33

依我看,你还是多用一个辅助单元格吧。
举例:
在A1单元格,输入这条公式:
=RANDBETWEEN(1,100)
在B1单元格输入这么公式:
=IF(A1<=87,RANDBETWEEN(0,8),IF(A1<=97,RANDBETWEEN(9,12),RANDBETWEEN(13,15)))
注意的是,RANDBETWEEN取出的数,是会在重新计算的时候重新取数的,比如每次打开表格时,表格会重新计算,表格内任意位置发生变化时,表格会重新计算,按F9键时,表格会重新计算等。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com