OutFile "Random.exe" Name "Random" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Usage: ; Push Seed (or previously generated number) ; Call RandomNumber ; Pop Generated Random Number Function RandomNumber Exch $R0 IntOp $R0 $R0 * "13" IntOp $R0 $R0 + "3" IntOp $R0 $R0 % "1048576" ; Values goes from 0 to 1048576 (2^20) Exch $R0 FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Usage: ; Push Seed (or previously generated number) ; Push MaxValue ; Call RandomNumber ; Pop Generated Random Number ; Pop NewSeed Function LimitedRandomNumber Exch $R0 Exch Exch $R1 Push $R2 Push $R3 StrLen $R2 $R0 Push $R1 RandLoop: Call RandomNumber Pop $R1 ;Random Number IntCmp $R1 $R0 +1 NewRnd StrLen $R3 $R1 IntOp $R3 $R3 - $R2 IntOp $R3 $R3 / "2" StrCpy $R3 $R1 $R2 $R3 IntCmp $R3 $R0 +1 RndEnd NewRnd: Push $R1 Goto RandLoop RndEnd: StrCpy $R0 $R3 IntOp $R0 $R0 + "0" ;removes initial 0's Pop $R3 Pop $R2 Exch $R1 Exch Exch $R0 FunctionEnd Section "" Push $HWNDPARENT ;Seed Loop: Push 100 ;Max Random Number Call LimitedRandomNumber pop $R0 ;Random Number pop $R1 ;New Seed MessageBox MB_YESNO "Random=$R0, Seed=$R1" IDNO +3 push $R1 Goto Loop SectionEnd