首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Irvine32随机化

使用Irvine32随机化
EN

Stack Overflow用户
提问于 2013-11-30 10:01:31
回答 1查看 581关注 0票数 1

程序对数字1-53进行随机化,不重复。

我不能让Check循环工作,但我知道这是问题所在,因为它没有它就可以工作,但是我需要它,这样我就不会得到重复,还有,你如何按顺序对数字进行排序?

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

发布于 2013-11-30 21:36:08

与随机选择问题不同,你可以假设你有一个由数字组成的表,这些数字被伪随机交换,为你提供所需的混洗效果。

用所需的每个数字填充表,然后使用数字生成器,选择表中的数字对,并交换它们。这样,您可以选择要更改的项数,并确保在不创建新编号时不存在重复项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20295665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档