复制粘贴随机数结果

时间:2014-12-12 23:39:57

标签: vba

Sub MinimumCost()
Range("TotalCost_D").ClearContents

Range("MinimumCost").Value = 100000000
Dim i As Integer

Range("PurchasedVans_M").Formula = "=Randbetween(0,2)"

For i = 1 To 10000

Calculate

If Range("TotalCost").Value < Range("MinimumCost").Value Then
Range("MinimumCost").Value = Range("TotalCost").Value
    Range("TotalCost_D") = Range("MinimumCost")
    Range("PurchasedVans").Value = Range("PurchasedVans_M").Value

    End If
Next i
End Sub

该代码旨在计算优化成本,然后将优化的面包车和成本数量超过仪表板。

问题是面包车的数量与优化成本结果不匹配。这意味着我使用购买结果的货车数来计算总成本,这与我之前获得的优化成本不相等。 是因为功能之间的随机无法修复? 有没有更好的方法来生成随机数? 你能检查我的代码并告诉我问题的原因吗?

亲切的问候

1 个答案:

答案 0 :(得分:0)

每次调用Calculate时,RandBetween都会重新计算,即10,000次。

如果您希望每次调用MinimumCost只计算一次,则将值替换为值:

    Range("PurchasedVans_M").Value = Int(Rnd * 3)

Excel函数RandBetween(a,b)等同于VBA Int(a + Rnd * (b - a + 1))

请注意,RandBetween(0,2)会返回 整数 0,1或2。

如果您想要 浮点 号码0 <= n < 2,请使用Rnd * 2

a <= n < b的更一般情况是a + Rnd * (b - a)