[英]Randomizing with Irvine32
編程以隨機化數字1-53,而無需重復。
無法使Check
循環正常工作,但是我知道這是問題所在,因為沒有它就可以工作,但是我需要它,所以我不會重復,還有如何對數字進行排序?
Include Irvine32.inc
.data
a dword 1
b dword 53
delta dword ?
blank byte " ",0
array dword 52 dup(0)
lenarray = LengthOF array
.code
main PROC
call randomize
mov eax,b
sub eax,a
inc eax
mov delta,eax
mov esi,offset array
mov edx,offset blank
mov ecx, lenarray
xxx:
push ecx
push esi
bk: mov eax,delta
call randomrange
add eax,a
mov esi,0
mov ecx,lenarray
Check:
cmp eax,[esi]
je bk ;if duplicate
add esi,4
loop Check
pop esi
pop ecx
call writedec
call writestring
mov [esi],eax
add esi,4
loop xxx
代替隨機選擇問題,您可以將其設置為一個具有偽隨機交換的數字表的形式,以為您提供所需的混洗效果。
在表中填寫所需的每個數字,然后使用數字生成器,在表中選擇數字對,然后進行交換。 這樣,您可以選擇要更改的項目數量,並且可以確保不存在重復項,因為不會創建任何新編號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.