Я пихнул её в цыкл, и САМ НЕ ЗНАЮ КАК ПОЛУЧИЛОСЬ ЧТО ОНА ВЫДАЁТ то 0 то число ~ 10042,54267547 +++...
Я подумал а почему это не преобразовать в True и False...
И к моему удивлению получилось что при испытании получается примерно равное количество True и False, однако был один нуанс, если Timer не изменялся т.е. функция выполнялась несколько раз подряд то ответы функции совпадали, однако я добавил отслеживаение повтора параметра правда возможно не совсем идеально, но теперь всё работает нормально...
И пришёл я к выводу что Rnd - баг в сложном алгоритме И сама функция может быть написана чисто случайно ведь это и есть Rnd
В модуль:
- Код: Выделить всё
Dim LastRndNum(60) As Double
Public Function RngTF(RndNum As Double) As Boolean
For i = 0 To 59 Step 1
If LastRndNum(i) = RndNum Then RndNum = RndNum + 0.001 * (Timer - 2): LastRndNum(i + 1) = RndNum
Next i
Dim n() As Double
Const pi As Double = 3.14678697088135
ReDim n(RndNum)
For i = 1 To RndNum Step 1
n(i) = 7 / 11 * pi + n(i - 1)
Next i
If n(RndNum) = 0 Then RngTF = False Else RngTF = True
LastRndNum(0) = RndNum
End Function
А использовать так:
- Код: Выделить всё
a = RngTF(Timer)