2016-07-21 5 views
2

Ich versuche, eine zuchteigene Variable zu generieren, die ihre Werte aus einer zufälligen Beta-Verteilung in Netlogo zieht.Zeichnen Sie eine zufällige Beta-Verteilung in Netlogo

Ich habe das "bc" -Code-Beispiel online gefunden, aber ich habe Mühe, es an das anzupassen, was ich brauche. Gerade jetzt, für die Bequemlichkeit, habe ich meine Verteilung aus einer zufälligen Normalverteilung erzeugen mit

create-breed 500 
[ 
    set target_factor random-normal 0.9 0.05 
    if target_factor > 1 [set target_factor 0.9999999999] 
    if target_Factor < 0.5 [set target_factor 0.5000000001] 
] 

Also im Grunde würde Ich mag einen Reporter erhalten, die den „random-normal 0,9 0,05“ -Teil mit einem ersetzen kann Zufall beta-Verteilung

bekam ich so weit:

to-report random_beta 
    set asocial_alpha 2 
    set asocial_beta 2 
    set asocial_min_eps 0 
    set asocial_max_eps 0.25 
    let x random-gamma asocial_alpha 1 
    let asocial_eps (x/(x + random-gamma asocial_beta 1)) 
    set asocial_eps asocial_min_eps + (asocial_eps * (asocial_max_eps - asocial_min_eps)) 
foreach (n-values 99 [ (? + 1)/100 * (asocial_max_eps -  asocial_min_eps) + asocial_min_eps]) 
    [report ? (((? - asocial_min_eps)^(asocial_alpha - 1) * (asocial_max_eps - ?)^(asocial_beta - 1))/(asocial_max_eps - asocial_min_eps)^(asocial_alpha + asocial_beta - 1))] 
end 

die alle ‚set‘ hier Variablen sind globale Faktoren

ich bin ehrlich aus meiner Tiefe mit dieses eine mathematisch. Wenn jemand mir helfen kann, diesen Reporter zu reparieren (oder wenn eine Prozedur funktionieren würde, ist das auch in Ordnung). so ist mein endgültiger Code für die Zuchtkreation:

create-breed 500 
[ 
    set target_factor random-beta 
    if target_factor > 1 [set target_factor 0.9999999999] 
    if target_Factor < 0.5 [set target_factor 0.5000000001] 
] 

Ich wäre ewig dankbar !!

Antwort

Verwandte Themen