2015-02-04 4 views
2

저는 수학에 능숙하지 않으므로, 대략 파레토 (pareto) 분포를 따르는 NetLogo에서 난수 생성기를 구현하는 데 어려움을 겪고 있습니다. 이것은 here의 후속 질문입니다. 여기서는 random-float"random-pareto"과 같은 것으로 바꾸고 싶습니다. 파레토 분포 (시뮬레이션 된 지진 및 파괴 정도에 대한 생각)를 따르는 모델에서 이벤트가 발생하도록하려면 다음과 같이하십시오. 문제NetLogo에서 "임의 파레토"를 만드는 방법은 무엇입니까?

코드는 다음과 같습니다 나는 R과 random-exponential(- mean) * ln random-float 1.0로 기록 될 수 있다는 사실에 대한 Netlogo 사전 here에서 동일한 작업을 수행하기 위해이 질문에 here에서 영감을 얻었다

ask hits [ 
    let %draw (random-float 100) 
    let %strength 0 ;; no damage 
    if (%draw < 50) [set %strength (%strength + 1)] ;;1 for little damage 
    if (%draw < 10) [set %strength (%strength + 1)] ;;2 for middle damage 
    if (%draw < 5) [set %strength (%strength + 1)] ;;3 for strong damage 
    if (%draw < 1) [set %strength (%strength + 1)] ;;4 for complete destruction 

    ifelse pcolor = red [die] 
    [ ask n-of %strength patches [ set pcolor red ]] 
    ] 

.

누군가 도울 수 있습니까?

답변

4

균일 한 분포 (random-float)에서 원하는 분포로 변환하는 방정식이 필요합니다. stackexchange 통계에 ​​대한 더 나은 질문 일 수 있습니다. 그러나 위키에있어서, 상기 공식은 다음

$$ T = \ FRAC {m} {U^\ FRAC는 {1} {\ 알파}} $$

$ U $는 어디 $ T $는 파레토 분포 난수이고, $ m $ (최소)와 $ \ alpha $는 분포의 매개 변수입니다. 이 맞다면, 당신은

to-report random-pareto [alpha mm] 
    report mm/(random-float 1^(1/alpha)) 
end 

당신이 3의 1의 최소 및 알파 분포에서 임의의 파레토을 원하는 말

로 NetLogo 코드 수, 당신은 다음 random-pareto 3 1

+0

이처럼 보이는 코드를 얻을 수 stackexchange에는 수학 점수가 없습니다! – JenB

+0

참조 : https://meta.stackexchange.com/questions/30559/latex-on-stack-overflow –

+0

대단히 감사합니다. JenB. 이제는 공식을 NetLogo로 "음역"하는 방법을 더 잘 이해합니다. –

관련 문제