生成列表 OCaml 元素的随机排列

问题描述 投票:0回答:1

我想要生成列表元素的随机排列, 示例:

listString =  ["a"; "b"; "c"; "d"; "e"; "f"]

我想要类似的东西:

result = ["a"; "e"; "f"; "b"; "d"; "c"]

但是每次调用函数时结果都会改变。 所以当我第二次调用该函数时返回类似:

result = ["c"; "d"; "b"; "f"; "e"; "a"]
list random ocaml element
1个回答
1
投票

我找到了解决方案:

 let shuffle d =
   Random.self_init ();
   let nd = List.map (fun c -> (Random.bits (), c)) d in
   let sond = List.sort compare nd in
   List.map snd sond

Random.self_init () 行;使用以系统相关方式选择的随机种子初始化生成器。

© www.soinside.com 2019 - 2024. All rights reserved.