如何使用随机数进行计算并保持返回最低增量的数字集?

时间:2019-06-07 16:59:04

标签: excel vba

我正在努力解决如何使用随机数进行一系列计算的问题,并保持从原始数据集返回最低增量的数字集。

我正在尝试通过使用随机数约束来重新创建数据,并希望在随机数中循环设置一定数量的循环,然后用excel从原始数据集中获取具有最低增量的随机样本集来填充数据

我正在使用原始数据+ RANDBETWEEN(-STDEV,STDEV)的公式AVERAGE计算随机数据集。增量是原始数据与随机数据集之间的差。

总和Delta是总和。

不是我要寻找与原始数据相匹配的每个随机数据,而是要寻找与原始数据相匹配的总和。

第一次运行如下:

Example

因此,当重新计算随机数时,它看起来像这样:

enter image description here

2 个答案:

答案 0 :(得分:0)

可以尝试

Sub test()
Dim Ws As Worksheet, Rng As Range, Arr(1 To 6) As Variant, xSet As Variant
Dim ItrNo As Long, MinSum As Long, Rw As Long
Set Ws = ThisWorkbook.ActiveSheet
Set Rng = Ws.Range("A1:C8")
Application.Calculation = xlCalculationManual
MinSum = 100000


    Do While ItrNo < 100  ' change 100 according to your requirement
    Rng.Calculate
    xSet = Range("B2:B7").Value
        'next block is only for storing each sets from column J, delete if not required
        For Rw = 2 To 7
        Ws.Cells(Rw, ItrNo + 10).Value = xSet(Rw - 1, 1)
        Next

        If Ws.Range("C8").Value < MinSum Then
        MinSum = Ws.Range("C8").Value
            For Rw = 1 To 6
            Arr(Rw) = xSet(Rw , 1)
            Next
        End If
    ItrNo = ItrNo + 1
    Loop

Ws.Range("D2:D7").Value = Application.Transpose(Arr) 'place set resulting min Delta at column D , Change to requirement
Application.Calculation = xlCalculationAutomatic
End Sub

要进行测试的范围A1:C8,可以根据需要修改范围,迭代次数等。

注意:有许多方法可以实现相同的目的,但只是发布了第一个想法。

答案 1 :(得分:0)

所以,做一些假设,但这是一个可能对您有所帮助的简单示例:

enter image description here

相关问题