/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 0 - 2 0 2 1 , ĠD ani lo ĠP ian ini Ġand Ġcontributors Ċ Ġ* Ġlisted Ġin Ġthe Ġmain Ġproject 's Ġal che mist / build . gradle . k ts Ġfile . Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠAl che mist , Ġand Ġis Ġdistributed Ġunder Ġthe Ġterms Ġof Ġthe Ċ Ġ* ĠGNU ĠGeneral ĠPublic ĠLicense , Ġwith Ġa Ġlinking Ġexception , Ċ Ġ* Ġas Ġdescribed Ġin Ġthe Ġfile ĠLICENSE Ġin Ġthe ĠAl che mist Ġdistribution 's Ġtop Ġdirectory . Ċ Ġ*/ Ċ Ċ package Ġit . uni bo . al che mist . model . implement ations . actions Ċ Ċ import Ġit . uni bo . al che mist . model . interfaces . M olecule Ċ import Ġit . uni bo . al che mist . model . interfaces . Node Ċ import Ġit . uni bo . al che mist . model . interfaces . Reaction Ċ import Ġorg . apache . commons . math 3 . random . Random Generator Ċ Ċ /** Ċ Ġ* ĠTre ats Ġ[ molecule ] Ġas Ġa Ġprob abil istic Ġswitch : Ċ Ġ* Ġ* Ġif Ġit Ġis Ġpresent , Ġthen Ġwith Ġprobability Ġ[ od ds ] Ġit 's Ġremoved Ġfrom Ġ[ node ]; Ċ Ġ* Ġ* Ġotherwise , Ġwith Ġprobability Ġ[ od ds ] Ġit Ġis Ġinserted Ġin Ġ[ node ] Ġwith Ġthe Ġprovided Ġ[ con cent ration ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġ< T > Ġconcent ration Ġtype Ċ Ġ* Ġ@ param Ġnode Ġthe Ġnode Ġcontaining Ġthe Ġmolecule Ġto Ġtoggle Ċ Ġ* Ġ@ param Ġrandom Generator Ġrandom Ġnumber Ġgenerator Ġto Ġuse Ċ Ġ* Ġ@ param Ġmolecule Ġthe Ġmolecule Ġto Ġtoggle Ċ Ġ* Ġ@ param Ġconcent ration Ġthe Ġconcent ration Ġto Ġuse Ġfor Ġthe Ġ" on " Ġstate Ċ Ġ* Ġ@ param Ġodd s Ġprobability Ġto Ġtoggle Ġthe Ġmolecule Ġevery Ġtime Ġthe Ġaction Ġis Ġtriggered Ċ Ġ*/ Ċ open Ġclass ĠToggle M olecule Random ly < T >( ĊĠĠĠ Ġnode : ĠNode < T >, ĊĠĠĠ Ġprivate Ġval Ġrandom Generator : ĠRandom Generator , ĊĠĠĠ Ġmolecule : ĠM olecule , ĊĠĠĠ Ġconcent ration : ĠT , ĊĠĠĠ Ġprivate Ġval Ġodd s : ĠDouble Ċ ) Ġ: ĠToggle M olecule < T >( node , Ġmolecule , Ġconcent ration ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( od ds Ġin Ġ 0 . 0 .. 1 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Probability Ġof Ġto g gling Ġshould Ġin Ġ[ 0 , Ġ 1 ], Ġprovided : Ġ$ od ds " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclone Action ( node : ĠNode < T >, Ġreaction : ĠRe action < T >) Ġ= ĊĠĠĠĠĠĠĠ ĠToggle M olecule Random ly ( node , Ġrandom Generator , Ġmolecule , Ġconcent ration , Ġodd s ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRol ls Ġthe Ġdice Ġand Ġtoggle s Ġthe Ġmolecule . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġexecute () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( should Toggle ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . execute () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġit Ġis Ġtime Ġto Ġtoggle Ġthe Ġmolecule . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġshould Toggle () Ġ= Ġrandom Generator . next Double () Ġ<= Ġodd s Ċ } Ċ