如何创建基于概率计算随机数的随机数生成器?
例如,我有以下数字,它们从单元格 A1 和 B1 开始出现的概率:
100 5%
75 10%
50 42%
30 30%
15 5%
0 8%
因此,该公式将“随机”返回 5% 的数字“15”。
如何创建基于概率计算随机数的随机数生成器?
例如,我有以下数字,它们从单元格 A1 和 B1 开始出现的概率:
100 5%
75 10%
50 42%
30 30%
15 5%
0 8%
因此,该公式将“随机”返回 5% 的数字“15”。
开销略少:
制作您的值的参考图表,以及概率的运行总和:
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))...
此功能作为分析工具包插件的一部分提供。您可以在 Excel 选项 -> 插件 -> 管理插件中找到它。
您想要生成随机数,然后选择“离散”分布。对此的输入是您在帖子中提供的表格。
“离散以一个值和相关的概率范围为特征。范围必须包含两列:左列包含值,右列包含与该行中的值关联的概率。概率之和必须为 1。”
jsarma 的建议也不错....
您可以使用 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's、10 75's、42 50's 等填充另一列...
现在...
=VLOOKUP(RANDBETWEEN(1,100),A1:B100,2)
可能有更好的方法来做到这一点,但我试过了,它似乎有效。