-
FAQ
(
http://forum.boolean.name/forumdisplay.php?f=15)
- -
Замена Rnd
(
http://forum.boolean.name/showthread.php?t=193)
alcosholik |
12.10.2005 09:33 |
Цитата:
Originally posted by Diplomat+Oct 11 2005, 06:17 PM--><div class='quotetop'>ЦИТАТА(Diplomat @ Oct 11 2005, 06:17 PM)</div><div class='quotemain'>Забавная задачка:
Используя генератор Rnd, написать ф-ю, которая возвращала бы значения 1, 2 или 3 с равной вероятностью.[/b]
|
Цитата:
Originally posted by SubZer0@Oct 11 2005, 09:54 PM
Код:
Dim Value(4)
For q=0 To 10000
X=aRnd(1,4)
Value(X)=Value(X)+1
Next
For q=0 To 4
Print q+" возвращалось приблизительно в "+ Value(q)/100+"% случаев..."
Next
WaitKey()
End
function arnd%(b%,e%)
b1%=-b%*10
e1%=e%*20
repeat
r%=rnd(b1%,e1%)
until r%>=b% and r%<=e%
if r>e then r=r-e
return r%
end function
результат - супер! скорость работы - подбирается коэффициентами умножения... тут типа движок* <Скорость> -----0----- <Ровнее график> чемто надо жертвовать..
|
<!--QuoteBegin-PAX@Oct 11 2005, 10:04 PM
А вот что я придумал :
Код:
Dim Value(4)
For q=0 To 1000000
X=arnd(1,4)
Value(X)=Value(X)+1
Next
For q=0 To 4
Print q+" возвращалось приблизительно в "+ Value(q)/100+"% случаев..."
Next
WaitKey()
End
Function arnd%(b%,e%)
If Rand(0,1) Then
Return Rnd(b%,e%/2)
Else
Return Rnd(e%/2+1,e%)
EndIf
End Function
На большом количестве испытаний показывает почти одинаковые результаты[/quote]
|
Часовой пояс GMT +4, время: 08:15. |
|
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot