如何创建一个随机数生成器,根据概率计算随机数?
例如,我有以下数字,它们将出现在单元格A1和B1中的概率:
100 5%
75 10%
50 42%
30 30%
15 5%
0 8%
因此,公式将“随机”返回“15”的数字5%。
答案 0 :(得分:4)
略微减少开销:
制作您的值的参考图表,以及概率的运行总计:
C D E
100 5% 0
75 10% 5%
50 42% 15%
30 30% 57%
15 5% 87%
0 8% 92%
然后在此图表上查找0-1随机数。 =LOOKUP(RAND(),$E$2:$E$7,$C$2:$C$7)
我生成了5224个数字并生成了结果的数据透视图。刷新导致百分比在目标周围略微动摇,但所有尝试看起来都很好。
Row Labels Count Percentage Target
0 421 8.06% 8%
15 262 5.02% 5%
30 1608 30.78% 30%
50 2160 41.35% 42%
75 490 9.38% 10%
100 283 5.42% 5%
Grand Total 5224 100.00%
或者您可以使用两个单元格和一个长if语句来执行此操作:
=RAND()
=IF(A9<0.05,100,IF(A9<0.15,75, ... 0))...
答案 1 :(得分:2)
此功能是分析工具包添加的一部分。您可以在Excel选项中找到它 - &gt;添加ins - &gt;管理添加插件。
您想要随机数生成,然后选择“离散”分布。您输入的是您在帖子中提供的表格。
“离散 以值和相关的概率范围为特征。范围 必须包含两列:左列包含值,右列 列包含与该行中的值关联的概率。总和 概率必须为1.“
jsarma的建议也很好......
答案 2 :(得分:1)
您可以使用vlookup和randbetween。
你想要使用randbetween。 http://office.microsoft.com/en-us/excel-help/randbetween-HP005209230.aspx
vlookup:http://office.microsoft.com/en-us/excel-help/vlookup-HP005209335.aspx
填写一列,连续编号范围为1-100。 用5 100,10 75,42 50等填充另一列......
现在......
=VLOOKUP(RANDBETWEEN(1,100),A1:B100,2)
可能有更好的方法可以做到这一点,但我试过这个并且它似乎有效。