Popis parametrů je v sub GenerujRand, ukládá dolů do řádků od aktivní buňky.
Sub Náhodné()
Call GenerujRand(10, 0, 5, 15, 100)
End Sub
Sub GenerujRand(StředníHodnota, PočetDesetinnýchMíst, DolníHranice, HorníHranice, PočetNáhodnýchČísel)
Dim Pole() As Double, Suma As Double
Dim j As Integer
ReDim Pole(PočetNáhodnýchČísel) As Double
For i = 1 To PočetNáhodnýchČísel
Pole(i) = Int(((HorníHranice * 10 ^ PočetDesetinnýchMíst - DolníHranice * 10 ^ PočetDesetinnýchMíst + 1) * Rnd + DolníHranice * 10 ^ PočetDesetinnýchMíst))
Suma = Suma + Pole(i)
Next i
i = 1
If Suma > StředníHodnota * PočetNáhodnýchČísel * 10 ^ PočetDesetinnýchMíst Then i = -1
Do Until Suma = StředníHodnota * PočetNáhodnýchČísel * 10 ^ PočetDesetinnýchMíst
j = Int(PočetNáhodnýchČísel * Rnd + 1)
If i = 1 Then
If Not Pole(j) = HorníHranice * 10 ^ PočetDesetinnýchMíst Then
Pole(j) = Pole(j) + i
Suma = Suma + i
End If
Else
If Not Pole(j) = DolníHranice * 10 ^ PočetDesetinnýchMíst Then
Pole(j) = Pole(j) + i
Suma = Suma + i
End If
End If
Loop
For i = 1 To PočetNáhodnýchČísel
ActiveCell.Offset(i - 1, 0) = Pole(i) / (10 ^ PočetDesetinnýchMíst)
Next i
End Sub
citovat