程序对数字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 发布于 2013-11-30 21:36:08
与随机选择问题不同,你可以假设你有一个由数字组成的表,这些数字被伪随机交换,为你提供所需的混洗效果。
用所需的每个数字填充表,然后使用数字生成器,选择表中的数字对,并交换它们。这样,您可以选择要更改的项数,并确保在不创建新编号时不存在重复项。
https://stackoverflow.com/questions/20295665
复制相似问题