The MASM Forum

Projects => MasmBasic & the RichMasm IDE => Topic started by: jj2007 on October 27, 2017, 10:00:36 PM

Title: Unique random numbers
Post by: jj2007 on October 27, 2017, 10:00:36 PM
Probably another useless function, but from time to time the question pops up as an exercise in "high level" language forums, so I thought it might be nice to have it ;)

include \masm32\MasmBasic\MasmBasic.inc         ; download (http://masm32.com/board/index.php?topic=94.0)
include \Masm32\MasmBasic\Res\RandUnique.mac    ; included in MasmBasic.inc since 29 Oct 2017
  Init
  tests=20
  Dim MyRand() As DWORD
  PrintLine Str$("Possible range: %i ... ", -tests/2), Str$(tests/2)
  Let edi="unique numbers: "
  Rand()                                        ; set a seed value
  For_ ecx=0 To tests-1
        Rand(-tests/2, tests/2+1, MyRand(ecx), unique)  ; min, max, destination, flag
       Let esi=Str$(" %i ", MyRand(ecx))
        .if Instr_(edi, esi)
                inc  ebx                ; oops, we got that one already
        .else
                Let edi=edi+esi         ; remember the last number
        .endif
  Next
  if tests le 100
        PrintLine edi                   ; show the unique numbers
  endif
  Inkey Str$("-- %i errors, hit any key --", ebx)
EndOfCode


Output:Possible range: -10 ... 10
unique numbers:  -4  5  -9  -5  10  -2  -7  -3  2  -8  -6  8  4  6  9  3  -1  1  7  -10
-- 0 errors, hit any key --