/* Ċ Ġ* ĠThis Ġlibrary Ġclass Ġwas Ġcreated Ġby Ġ 0 xFC 9 6 3 F 1 8 DC 2 1 Ġ/ ĠSh ots 2 4 3 Ċ Ġ* ĠIt Ġis Ġpart Ġof Ġan Ġextension Ġlibrary Ġfor Ġthe Ġgame ĠNull po Min o Ġ( copyright Ġ 2 0 1 0 ) Ċ Ġ* Ċ Ġ* ĠHer ew ith Ġshall Ġthe Ġterm Ġ" Library ĠCreator " Ġbe Ġgiven Ġto Ġ 0 xFC 9 6 3 F 1 8 DC 2 1 . Ċ Ġ* ĠHer ew ith Ġshall Ġthe Ġterm Ġ" Game ĠCreator " Ġbe Ġgiven Ġto Ġthe Ġoriginal Ġcreator Ġof ĠNull po Min o . Ċ Ġ* Ċ Ġ* ĠTHIS ĠLIB R ARY ĠAND ĠMODE ĠPACK ĠW AS ĠNOT ĠMA DE ĠIN ĠASS OCI ATION ĠWITH ĠTHE ĠGAME ĠCRE ATOR . Ċ Ġ* Ċ Ġ* ĠRepository : Ġhttps :// github . com / Sh ots 2 4 3 / Mode P ile Ċ Ġ* Ċ Ġ* ĠWhen Ġusing Ġthis Ġlibrary Ġin Ġa Ġmode Ġ/ Ġlibrary Ġpack Ġof Ġyour Ġown , Ġthe Ġfollowing Ċ Ġ* Ġconditions Ġmust Ġbe Ġsatisfied : Ċ Ġ* ĠĠĠĠ Ġ- ĠThis Ġlicense Ġmust Ġremain Ġvisible Ġat Ġthe Ġtop Ġof Ġthe Ġdocument , Ġun modified . Ċ Ġ* ĠĠĠĠ Ġ- ĠYou Ġare Ġallowed Ġto Ġuse Ġthis Ġlibrary Ġfor Ġany Ġmod ding Ġpurpose . Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ- ĠIf Ġthis Ġis Ġthe Ġcase , Ġthe ĠLibrary ĠCreator Ġmust Ġbe Ġcredit ed Ġsomewhere . Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠSource Ġcomments Ġonly Ġare Ġfine , Ġbut Ġin Ġa ĠREADME Ġis Ġrecommended . Ċ Ġ* ĠĠĠĠ Ġ- ĠMod ification Ġof Ġthis Ġlibrary Ġis Ġallowed , Ġbut Ġonly Ġin Ġthe Ġcondition Ġthat Ġa Ċ Ġ* ĠĠĠĠĠĠ Ġpull Ġrequest Ġis Ġmade Ġto Ġmerge Ġthe Ġchanges Ġto Ġthe Ġrepository . Ċ Ġ* Ċ Ġ* ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " Ċ Ġ* ĠAND ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE Ċ Ġ* ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE Ċ Ġ* ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠOWNER ĠOR ĠCONTRIBUTORS ĠBE Ċ Ġ* ĠLIABLE ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR Ċ Ġ* ĠCONSEQUENTIAL ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF Ċ Ġ* ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS Ċ Ġ* ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN Ċ Ġ* ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) Ċ Ġ* ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE Ċ Ġ* ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ*/ Ċ package Ġz er ox fc . null po . custom . libs Ċ Ċ import Ġkotlin . random . Random Ċ Ċ class ĠWeight ed Random izer ( weight Arr : IntArray , Ġseed : Long ) Ġ{ Ċ ĉ private Ġval Ġlocal Random : Random Ċ ĉ private Ġvar Ġresults : IntArray Ċ ĉ private Ġvar Ġcumulative Weight List : IntArray Ċ ĉ private Ġvar Ġmax Weight : Int Ċ ĉ fun Ġset Weights ( weight Arr : IntArray ) Ġ{ Ċĉ ĉ var ĠnumberOf Zero es Ġ= Ġ 0 Ċĉ ĉ for ( i Ġin Ġweight Arr ) Ġ{ Ċĉĉ ĉ if ( i == 0 ) ĠnumberOf Zero es ++ Ċĉ ĉ } Ċĉ ĉ cumulative Weight List Ġ= ĠInt Array ( weight Arr . size - numberOf Zero es ) Ċĉ ĉ results Ġ= ĠInt Array ( weight Arr . size - numberOf Zero es ) Ċĉ ĉ max Weight Ġ= Ġ 0 Ċĉ ĉ var Ġctr Ġ= Ġ 0 Ċĉ ĉ for ( i Ġin Ġweight Arr . indices ) Ġ{ Ċĉĉ ĉ if ( weight Arr [ i ] != 0 ) Ġ{ Ċĉĉĉ ĉ max Weight Ġ+= Ġweight Arr [ i ] Ċĉĉĉ ĉ cumulative Weight List [ ctr ] Ġ= Ġmax Weight Ċĉĉĉ ĉ results [ ctr ] Ġ= Ġi Ċĉĉĉ ĉ ctr ++ Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ val Ġmax : Int Ċĉ ĉ get () Ġ= Ġresults [ results . size - 1 ] ĊĊ ĉ fun Ġnext Int (): Int Ġ{ Ċĉ ĉ val Ġg Val Ġ= Ġlocal Random . nextInt ( max Weight )+ 1 Ċĉ ĉ var Ġresult Ġ= Ġ 0 Ċĉ ĉ for ( i Ġin Ġcumulative Weight List . indices ) Ġ{ Ċĉĉ ĉ if ( cumulative Weight List [ i ] >= g Val ) Ġ{ Ċĉĉĉ ĉ result Ġ= Ġi Ċĉĉĉ ĉ break Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ return Ġresults [ result ] Ċ ĉ } ĊĊ ĉ init Ġ{ Ċĉ ĉ var ĠnumberOf Zero es Ġ= Ġ 0 Ċĉ ĉ for ( i Ġin Ġweight Arr ) Ġ{ Ċĉĉ ĉ if ( i == 0 ) ĠnumberOf Zero es ++ Ċĉ ĉ } Ċĉ ĉ cumulative Weight List Ġ= ĠInt Array ( weight Arr . size - numberOf Zero es ) Ċĉ ĉ results Ġ= ĠInt Array ( weight Arr . size - numberOf Zero es ) Ċĉ ĉ max Weight Ġ= Ġ 0 Ċĉ ĉ var Ġctr Ġ= Ġ 0 Ċĉ ĉ for ( i Ġin Ġweight Arr . indices ) Ġ{ Ċĉĉ ĉ if ( weight Arr [ i ] != 0 ) Ġ{ Ċĉĉĉ ĉ max Weight Ġ+= Ġweight Arr [ i ] Ċĉĉĉ ĉ cumulative Weight List [ ctr ] Ġ= Ġmax Weight Ċĉĉĉ ĉ results [ ctr ] Ġ= Ġi Ċĉĉĉ ĉ ctr ++ Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ local Random Ġ= ĠRandom ( seed ) Ċ ĉ } Ċ }