Una distribuzione gaussiana è quella curva preferita dalla matematica e le statistiche conosciute anche come la curva a campana o una distribuzione normale .
Un esempio di questo può essere visto con la somma di dadi rotondi 10x 10 lati:
Da AnyDice output 10d10
Ciò significa che la quantità di mutazione per un gene è molto probabilmente molto bassa. Se lanci questo set di dadi 30 volte, otterrai alcuni dati che assomigliano a:
53, 38, 52, 62, 51, 50, 71, 44, 52, 55, 56, 45, 48, 67, 48, 63, 33, 40, 62, 60, 54, 48, 67, 60 , 44, 63, 50, 50, 64, 56
Si noti che la maggior parte di questi numeri è abbastanza vicina al valore di 55. Questa è la chiave per questo - si desidera un valore medio.
Quando si fa una mutazione su un gene che ha un possibile cambiamento di -10 .. +10, si vuole che la maggior parte della possibilità sia di circa 0. Forse alcuni 1, o 2, o -1 o -2 ... ma non vuoi che un +10 abbia una probabilità uguale di una mutazione di +1.
E allora? Come si fa?
In Java, si userebbe java.util.Random #nextGaussian () . Questo ti darà un numero che ha una distribuzione normale con una media di 0.0.
Prenderesti il valore che ottieni da nextGaussian()
, e poi ... beh, fai dei calcoli per farlo entrare nell'intervallo che vuoi. Solo perché stai ottenendo un numero con una media di 0.0 non significa che ogni dato valore sarà in un determinato intervallo.
Le specifiche del nextGaussian()
per la lingua scelta sono solo una questione di trovare la libreria giusta per la lingua. È lì da qualche parte. Potresti voler consultare il tag : distribuzione normale su Stack Overflow filtrato per la tua lingua per vedere se qualcuno di questi le domande specificamente ti aiutano.