【问题标题】:Conditional random formulas条件随机公式
【发布时间】:2015-05-02 18:39:32
【问题描述】:

我正在为一个班级项目在 Excel 中开发一个模拟模型,我遇到了这个奇怪的问题。我的模型基本上是模拟有多个车站的电车路径。为了简单起见,我创建了这个 Excel 表格来演示我的模型和问题:

http://i.stack.imgur.com/8qhD2.png

如上图所示,这是到达1号站,想分别去2、3、4站的乘客的信息。

在单元格 B3 到 D3 中,我有这个公式:

=ROUND(BETA.INV(RAND(), 4, 4, 0,6),0)

在 B4 单元格中,我有这个公式:

=IF($E$3>8,IF(B3=0,0,RANDBETWEEN(1,B3)),B3)

最后,在单元格 B6 中,我有:

=B3 - B4

现在,电车一次只能载 8 名乘客,因此单元格 E4 中的总数不能超过 8。有没有办法让 Excel 执行以下操作:

  • 如果单元格 E3 的总人数大于 8 人,则根据想去每个车站的乘客人数随机选择可以上电车的乘客人数,直到单元格中的总人数E4 不超过 8(如上面的屏幕截图所示)。
  • 如果单元格 E3 中的总人数小于或等于 8 人,则单元格 B3 - D3 中的相同人数应转移到单元格 B4 - D4。

希望我的解释足够清楚。关于如何实现这一点的任何想法?

【问题讨论】:

    标签: excel random conditional simulation


    【解决方案1】:

    我不认为 excel 可以做到这一点,因为这涉及递归迭代。一种解决方法是,您可以生成大量测试用例,如果超过 8 个,则尝试形成 8 个,然后您可以选择成功的一个作为答案。

    你可以看看我的实现。这是Link

    【讨论】:

    • 感谢冯浩的回答。这种方法的唯一问题是,当我扩大车站数量(我有 10 个)和离开每个车站的火车数量(我有 4 个)时,它会变得更加复杂。
    • 那你可以用VBA来做。
    • 我发现这种方法的另一个问题是,如果没有总和为 8 的测试用例,模型就会崩溃。使用 VBA 创建它有多容易?我对VBA没有任何经验。谢谢冯!
    • 是的。因此,测试用例越多,成功的可能性就越大。如果你懂VB,那么VBA也差不多,如果你懂编程,那么VBA也不难学。
    • 我将尝试学习 VBA,希望我能尽快解决这个问题。谢谢冯。
    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 2011-12-10
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多