forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   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]

jimon 12.10.2005 18:16

невижу смысла в етой функции

если делать генератор случайных чисел - то делать его а не перефразировать то что уже есть
и на asm мы такое делали


Дискуссии в FAQ - плохая привычка. http://community.boolean.name/index.php?showtopic=216


Часовой пояс GMT +4, время: 08:15.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot