WhiteWorld
یک شنبه 24 آذر 1392, 11:03 صبح
چه طور میشه اعداد تصادفی تولید کرد؟؟
Delphi Coder
چهارشنبه 27 آذر 1392, 03:23 صبح
الگوریتمهای شناخته شده هم داره الگوریتمهای دیگر و دستکاری شده هم استفاده میشه اطلاعات بیشتر لازم داشتید اینجـــــــــــــــــــــ ـــــــــا (http://en.wikipedia.org/wiki/Lehmer_random_number_generator) رو ببینید. من یه کد آماده برای اسمبلی 32 بیت داشتم که یه زمانی از اینترنت پیدا کرده بودم ولی متاسفانه یادم نیست از کجا. این کدش هست:
.data
seed dd ?
.code
invoke GetTickCount
mov seed,eax
Rand32 proc base:DWORD
mov eax,seed
mov ecx,16807 ;a = 7^5
mul ecx ;edx:eax == a*seed == D:A
mov ecx,7fffffffh ;ecx = m
;**** Park-Miller mod
; div ecx
; mov eax,edx ;(a*seed) % 7fffffff
;**** Carta alternative mod
add edx,edx ;edx = 2*D
cmp eax,ecx ;eax = A
jna @F
sub eax,ecx ;if A>m, A = A - m
@@: add eax,edx ;eax = A + 2*D
jns @F
sub eax,ecx ;If (A + 2*D)>m
;****
@@: mov seed,eax ;save new seed
xor edx,edx
div base
mov eax,edx
ret
Rand32 endp
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.