簡體   English   中英

用Irvine32隨機分組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM