При таких входных условиях (когда верхняя граница случайных чисел ЗНАЧИТЕЛЬНО больше максимального среднего и количество случайных значений тоже прилично) любой макрос на основе перебора будет работать ОЧЕНЬ долго. Я не дождался
Поэтому ввел некоторые ограничения
Код |
---|
Private Sub CommandButton1_Click()
ReDim arrRND(0 To Val(Me.TextBox1.Value) - 1)
'UpVal = 500 'верхняя граница случайных чисел
LowVal = 0.5 'нижняя граница случайных чисел
'если верхняя граница случайных чисел больше нужного среднего,
'то верхней границей считается максимальное среднее
If Val(Me.TextBox2.Value) < 500 Then
UpVal = Val(Me.TextBox2.Value)
Else
UpVal = 500
End If
Randomize
Do
For I = 0 To UBound(arrRND)
arrRND(I) = Round((UpVal - LowVal + 1) * Rnd + LowVal, 2)
Next
DoEvents
Loop While Application.Average(arrRND) >= Val(Me.TextBox2.Value)
Range("C1").Resize(UBound(arrRND) + 1) = Application.Transpose(arrRND)
Range("E2") = Round(Application.Average(arrRND), 2)
End Sub
|