package Ġgod ot . core Ċ Ċ import Ġgod ot . Random Number Generator Ċ Ċ internal Ġinterface ĠG DR andom Ġ{ ĊĠĠĠ Ġ/** ĠGlobal ĠRandom Number Generator Ġfor Ġall Ġthe Ġrand Ġfunctions , Ġit Ġshould Ġhave Ġthe Ġsame Ġbehaviour Ġthan ĠG d Script .*/ ĊĠĠĠ Ġval Ġrng : ĠRandom Number Generator ĊĊĠĠĠ Ġ/** ĠRandom Ġrange , Ġany Ġfloating Ġpoint Ġvalue Ġbetween Ġfrom Ġand Ġto . Ġ*/ ĊĠĠĠ Ġfun Ġrand Range ( from : ĠFloat , Ġto : ĠFloat ) Ġ= Ġrand Range ( from . toDouble (), Ġto . toDouble ()). toFloat () ĊĊĠĠĠ Ġ/** ĠRandom Ġrange , Ġany Ġfloating Ġpoint Ġvalue Ġbetween Ġfrom Ġand Ġto . Ġ*/ ĊĠĠĠ Ġfun Ġrand Range ( from : ĠDouble , Ġto : ĠDouble ) Ġ= Ġrng . rand f Range ( from , Ġto ). toDouble () ĊĊĠĠĠ Ġ/** ĠRandom Ġfrom Ġseed : Ġpass Ġa Ġseed , Ġand Ġan Ġarray Ġwith Ġboth Ġnumber Ġand Ġnew Ġseed Ġis Ġreturned . Ġ" Seed " Ġhere Ġrefers Ġto Ġthe Ġinternal Ġstate Ġof Ġthe Ġpseudo Ġrandom Ġnumber Ġgenerator . ĊĠĠĠĠ Ġ* ĠThe Ġinternal Ġstate Ġof Ġthe Ġcurrent Ġimplementation Ġis Ġ 6 4 Ġbits . Ġ*/ ĊĠĠĠ Ġfun Ġrand Seed ( seed : ĠLong ): ĠPair < Long , ĠLong > Ġ{ ĊĠĠĠĠĠĠĠ Ġrng . seed Ġ= Ġseed ĊĠĠĠĠĠĠĠ Ġ// Call Ġto Ġrand i () Ġshould Ġchange Ġthe Ġvalue Ġof Ġthe Ġseed , Ġthat 's Ġwhy Ġwe Ġretrieve Ġit Ġagain Ġin Ġthe Ġreturn Ġstatement ĊĠĠĠĠĠĠĠ Ġval Ġrandom Value Ġ= Ġrng . rand i () ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( rng . seed , Ġrandom Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġrandom Ġfloating Ġpoint Ġvalue Ġon Ġthe Ġinterval Ġ[ 0 , Ġ 1 ]. Ġ*/ ĊĠĠĠ Ġfun Ġrand f () Ġ= Ġrng . rand f () ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġrandom Ġsigned Ġ 3 2 Ġbit Ġinteger . Ġ*/ ĊĠĠĠ Ġfun Ġrand i () Ġ= Ġrng . rand i (). toInt () ĊĊĠĠĠ Ġ/** ĠRandom izes Ġthe Ġseed Ġ( or Ġthe Ġinternal Ġstate ) Ġof Ġthe Ġrandom Ġnumber Ġgenerator . ĠCurrent Ġimplementation Ġre seeds Ġusing Ġa Ġnumber Ġbased Ġon Ġtime . Ġ*/ ĊĠĠĠ Ġfun Ġrandomize () Ġ= Ġrng . random ize () ĊĊĠĠĠ Ġ/** ĠSet Ġthe Ġvalue Ġof Ġthe Ġseed Ġ**/ ĊĠĠĠ Ġfun Ġseed ( seed : ĠLong ) Ġ= Ġrng . set Seed ( seed ) Ċ } Ċ