计划将数字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
答案 0 :(得分:0)
而不是随机选择问题,您可以将其设置为一个数字表,其中包含随机交换的数字表,以便为您提供所需的随机效果。
在表格中填写您需要的每个号码,然后使用数字生成器,在表格中选择数字对,然后进行交换。这样,您可以选择要更改的项目数,并确保不存在重复项,因为没有创建新数字。