package Ġnl . wy kor ij ns bur ger . k min random Ċ Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . BigInteger Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Local Time Ċ import Ġjava . time . Z onedDateTime Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Thread Local Random Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Type Ċ import Ġkotlin . reflect . jvm . jvm Er asure Ċ import Ġkotlin . streams . as Sequence ĊĊ Ċ private Ġval Ġrandom Ġ= ĠThread Local Random . current () Ċ Ċ internal Ġval Ġclass To Min Random Ġ= Ġmap Of ( ĊĠĠĠ Ġ// ĠNumbers ĊĠĠĠ ĠDouble :: class Ġto Ġrandom . next Double (), ĊĠĠĠ ĠFloat :: class Ġto Ġrandom . next Float (), ĊĠĠĠ ĠLong :: class Ġto Ġrandom . next Long (), ĊĠĠĠ ĠInt :: class Ġto Ġrandom . nextInt (), ĊĠĠĠ ĠShort :: class Ġto Ġrandom . nextInt (). to Short (), ĊĠĠĠ ĠByte :: class Ġto Ġrandom . nextInt (). to Byte (), ĊĊĠĠĠ ĠChar :: class Ġto Ġrandom String (). first (), ĊĠĠĠ ĠString :: class Ġto Ġrandom String (), ĊĠĠĠ ĠBoolean :: class Ġto Ġrandom . next Boolean (), ĊĊĠĠĠ Ġ// ĠArrays ĊĠĠĠ ĠDouble Array :: class Ġto Ġdouble ArrayOf (), ĊĠĠĠ ĠFloat Array :: class Ġto Ġfloat ArrayOf (), ĊĠĠĠ ĠLong Array :: class Ġto Ġlong ArrayOf (), ĊĠĠĠ ĠInt Array :: class Ġto Ġint ArrayOf (), ĊĠĠĠ ĠShort Array :: class Ġto Ġshort ArrayOf (), ĊĠĠĠ ĠByteArray :: class Ġto Ġbyte ArrayOf (), ĊĠĠĠ ĠChar Array :: class Ġto Ġchar ArrayOf (), ĊĠĠĠ ĠBoolean Array :: class Ġto Ġboolean ArrayOf (), ĊĊĠĠĠ Ġ// ĠCollections ĊĠĠĠ ĠList :: class Ġto Ġempty List < Any >(), ĊĠĠĠ ĠSet :: class Ġto Ġempty Set < Any >(), ĊĠĠĠ ĠIterable :: class Ġto Ġempty List < Any >(), ĊĠĠĠ ĠSequence :: class Ġto Ġempty Sequence < Any >(), ĊĠĠĠ ĠMap :: class Ġto Ġempty Map < Any , ĠAny >(), ĊĠĠĠ ĠQueue :: class Ġto ĠLinkedList < Any >(), ĊĊĠĠĠ Ġ// ĠJava . Time ĊĠĠĠ ĠInstant :: class Ġto ĠInstant . now (), ĊĠĠĠ ĠLocalDate :: class Ġto ĠLocalDate . now (), ĊĠĠĠ ĠLocal Time :: class Ġto ĠLocal Time . now (), ĊĠĠĠ ĠZ onedDateTime :: class Ġto ĠZ onedDateTime . now (), ĊĊĠĠĠ Ġ// ĠJava . Math ĊĠĠĠ ĠBigDecimal :: class Ġto ĠBigDecimal . valueOf ( random . next Double ()), ĊĠĠĠ ĠBigInteger :: class Ġto ĠBigInteger ( 5 , Ġrandom ), ĊĊĠĠĠ Ġ// ĠJava . Util ĊĠĠĠ ĠDate :: class Ġto ĠDate . from ( Instant . now ()), ĊĠĠĠ ĠOptional :: class Ġto ĠOptional . empty < Any >(), ĊĠĠĠ ĠUUID :: class Ġto ĠUUID . randomUUID () Ċ ) Ċ Ċ private Ġfun Ġrandom String (): ĠString Ġ{ ĊĠĠĠ Ġval Ġsource Ġ= Ġ" ABCDEF GH IJ KL MN OP Q RST UV W XYZ abcdefgh ijkl mnopqrst uvw xyz " ĊĊĠĠĠ Ġreturn Ġrandom . ints ( random . nextInt ( 1 , Ġ 5 0 ). to Long (), Ġ 0 , Ġsource . length ) ĊĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠ Ġ. map ( source :: get ) ĊĠĠĠĠĠĠĠ Ġ. join ToString ("") Ċ } Ċ Ċ internal Ġfun Ġ< T : ĠAny > ĠK Class < T >. random Enum (): ĠT Ġ{ ĊĠĠĠ Ġval Ġenum Constants Ġ= Ġjava . enum Constants ĊĊĠĠĠ Ġreturn Ġif Ġ( enum Constants Ġ== Ġnull Ġ|| Ġenum Constants . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Cannot Ġgenerate Ġrandom Ġvalue Ġfor Ġempty Ġenum Ġ${ this . simple Name }") ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġenum Constants [ random . nextInt ( enum Constants . size )] ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠK Type . random Enum (): ĠAny ? Ġ{ ĊĠĠĠ Ġreturn Ġthis . jvm Er asure . random Enum () Ċ }