package Ġnet . din omite . forget table Ċ Ċ import Ġjava . time . Instant Ċ import Ġjava . util .* Ċ Ċ val ĠMAX _ ITER Ġ= Ġ 1 0 0 0 Ċ val Ġrandom Ġ= ĠRandom () Ċ Ċ // Ġhttp :// stackoverflow . com / a / 1 2 4 1 6 0 5 / 1 7 3 3 9 Ċ fun Ġpo isson ( lambda : ĠDouble ): ĠInt Ġ{ ĊĠĠĠ Ġval ĠL Ġ= ĠMath . exp (- lambda ) ĊĠĠĠ Ġvar Ġp Ġ= Ġ 1 . 0 ĊĠĠĠ Ġvar Ġk Ġ= Ġ 0 ĊĊĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠ Ġk ++ ĊĠĠĠĠĠĠĠ Ġp Ġ*= ĠMath . random () ĊĠĠĠ Ġ} Ġwhile Ġ( p Ġ> ĠL ) ĊĊĠĠĠ Ġreturn Ġk Ġ- Ġ 1 Ċ } Ċ Ċ fun Ġdecay Time ( count : ĠInt , Ġt : ĠInstant , Ġrate : ĠDouble , Ġnow : ĠInstant ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( count Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġlambda Ġ= Ġrate Ġ* Ġ( now . epoch Second Ġ- Ġt . epoch Second ) ĊĠĠĠ Ġval Ġk Ġ= Ġpo isson ( lambda ) ĊĊĠĠĠ Ġif Ġ( k Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Po isson Ġsimulation Ġdid Ġnot Ġconver ge Ġwith Ġrate Ġof Ġ$ rate , Ġlambda Ġ$ lambda ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġk Ċ } Ċ