ورود

View Full Version : سوال: ایجاد عدد تصادفی



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