package Ġto mas vol ker . num er iko . core . probability . discrete Ċ Ċ import Ġkotlin . random . Random Ċ Ċ class ĠB ern ul li Distribution ( ĊĠĠĠĠĠĠĠ Ġval Ġp : ĠDouble Ċ ): ĠDis crete Probability Distribution Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġmean : ĠDouble ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġp ĊĊĠĠĠ Ġoverride Ġval Ġvariance : ĠDouble ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġp Ġ* Ġ( 1 Ġ- Ġp ) ĊĊĠĠĠ Ġoverride Ġfun Ġprobability ( x : ĠInt ): ĠDouble Ġ= Ġwhen ( x ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ 1 Ġ- Ġp ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġp ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcumulative Density ( x : ĠInt ): ĠDouble Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġx Ġ<= Ġ 0 . 0 Ġ-> Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġx Ġ<= Ġ 1 . 0 Ġ-> Ġ 1 Ġ- Ġp ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext Int ( random : ĠRandom ): ĠInt Ġ= Ġrandom . nextInt ( 1 ) ĊĊĠĠĠ Ġfun Ġnext Boolean ( random : ĠRandom Ġ= ĠRandom ): ĠBoolean Ġ= Ġrandom . next Double () Ġ<= Ġp Ċ Ċ }