Unique Random Number Generation
using { /Verse.org/Random }
using { /Verse.org/Verse }
#Class of Util functions
UtilFunctions:= class():
#Pool of all numbers that can be selected
var NumPool : []int = array{}
#Get a random int no repeated, Arg: MinNum: min int get, MaxNum: max int get
GetRandomNumber(MinNum: int, MaxNum: int) :int =
#Creat a numbers pools:
if(NumPool.Length =0):
Nums := for(Num:= MinNum..MaxNum):
Num
set NumPool = Nums
#Get a random index of numbers in pool
RandNum : int = GetRandomInt(0,NumPool.Length-1);
if(FinalNum := NumPool[RandNum]):
#Remove the number corresponding to the index from the pool, and update the pool
if (NewArray := NumPool.RemoveElement[RandNum]):
set NumPool = NewArray
return FinalNum
else:
return 0
#clear numbers appeared pool
CleanNumPool():void =
#Clean the numbers appeared
set NumPool = array{}