【问题标题】:How can I implement 'frequency' into a random number generator in Excel?如何在 Excel 中将“频率”实现到随机数生成器中?
【发布时间】:2015-04-16 14:10:13
【问题描述】:

假设我有三个项目,每个项目都有一个从 1 到 3 的指定频率,其中 1 是“低”,3 是“高”。

Item A - 1  
Item B - 2  
Item C - 3

在重新计算工作表时,我希望一个单元格随机显示其中一项,但要根据它们的频率。

(即如果我计算 6 次,我希望项目 A 出现一次,项目 B 出现两次,项目 C 出现三次。)

理想情况下,我还会强制每次使用唯一的随机数(例如,1-6 中的每个数字只出现一次)。

一个可行的解决方案,但是在未来的工作表中设置非常耗时,而且我在回顾代码时几乎无法理解它 - 谁能想到一个巧妙的方法来做到这一点?

(我的解决方案涉及对频率求和以建立每个项目的边界[例如项目 C 的边界是 4-6],然后将随机数与该边界进行比较并搜索适当的项目)

【问题讨论】:

  • 这里是c#的所有代码 ..只需复制并粘贴stackoverflow.com/a/33991225/294884(注意,事先求和它们是没有意义的,处理完全是微不足道的。在极端在不寻常的情况下,你必须生成数万亿个或其他东西,你会采取完全不同的方法。)

标签: excel vba random numbers frequency


【解决方案1】:

在统计学中,这称为伯努利分布(参见维基百科http://en.wikipedia.org/wiki/Bernoulli_distribution)。在 Excel 工作表中很容易实现:您从标准均匀分布中绘制(使用函数 RAND),如果绘制小于 1/6(对于项目 A),则结果为 1,否则结果为 0。对于项目 B和 C,使用相同的逻辑,除了概率是 2/6 和 3/6。您可以通过对所有项目重复此操作来测试结果,例如 1000 次,然后计算平均值。结果应该非常接近您的预期概率。用于给定项目的公式是:

=IF(RAND()<=A$1;1;0)

其中 A1 包含概率(例如项目 A 的 1/6)

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2012-11-28
    • 2021-01-10
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多