, 그것을 할 수있는 방법을 도와주세요 가중치를 얻는 방법을 알아내는 기운 다 확장자를 으로 지정하고을 선택하고이 색인을 사용하여 기자가 rnd:weighted-one-of
으로 전달 된 확률과 해당 값이 선택되면 목록의 값에 액세스합니다. 아래 코드에 example1
입니다.
그러나 동일한 목록에 값과 확률을 모두 넣을 수 있다면 확장이 더 쉽습니다. 이는 "쌍"(즉, 각 하위 목록에 두 항목이있는 목록의 목록) 목록을 작성하여 수행됩니다. 그걸 가지고 있으면, 기자의 쌍 (item 1
)의 두 번째 항목을 사용하여 쌍의 첫 번째 항목 (item 0
)을 사용하여 상태를 설정할 수 있습니다. example2
에서는이를 수행하는 방법을 보여줍니다.
extensions [ rnd ]
to example1
let values [1 2 3]
let probabilities [0.2 0.3 0.5]
let indices n-values length values [ ? ]
let index rnd:weighted-one-of indices [ item ? probabilities ]
let state item index values
end
to example2
let pairs [[1 0.2] [2 0.3] [3 0.5]]
let state item 0 rnd:weighted-one-of pairs [ item 1 ? ]
end
편집 : 코멘트에 세스에 의해 언급 한 바와 같이
, 당신은 (map list values probabilities)
으로 두 개의 별도의 목록에서 쌍 목록을 구성 할 수 있습니다. 그는 또한 코드가 item 0
과 item 1
대신에 first
과 last
으로 "명확해질 수있다"고 언급했다.
example3
는 모두 제안을 통합 :
to example3
let values [1 2 3]
let probabilities [0.2 0.3 0.5]
let pairs (map list values probabilities)
let state first rnd:weighted-one-of pairs [ last ? ]
end
'values'와'probabilities' :''(map list values 확률)''pairs '만드는 법 –
'item 0'과'item 1 대신에'first'와'last'가 조금 더 명확하게 보일 수도 있습니다 '? –
좋은 지적. 내 대답을 편집했습니다. –