Weighted random selection using Walker's Alias Method

后端 未结 2 1061
既然无缘
既然无缘 2020-12-19 20:37


I was looking for this algorithm
(algorithm which will randomly select from a list of elements where each element has different probability of being

2条回答
  •  孤城傲影
    2020-12-19 20:54

    Here is the similar code in F#:

    let rng = new System.Random()
    let d = [| "A", 3
               "B", 2
               "C", 3 |]
    let sums = Seq.scan (+) 0 (dict d).Values |> Seq.skip 1 |> Seq.toArray 
    let pick = rng.Next(sums.[sums.Length-1])
    let res = fst d.[sums |> Seq.findIndex ((<) pick)]
    

提交回复
热议问题