Jac*_*ale 2 ocaml functional-programming
首先,我不关心seed这个问题.
我的问题是,Random.self_init每次我想在我的功能中重新开始时我是否应该打电话?
let shuffle l =
Random.self_init ();
let tagl = List.map (fun x -> (Random.bits (), x)) l in
List.map (fun x -> snd x) (List.sort compare tagl);;
Run Code Online (Sandbox Code Playgroud)
例如,在上面的代码中,是否Random.self_init ()有必要?
每次想要洗牌时都要把它称为熵.最好在程序开始时调用一次.但是如果你想为不同的程序运行获得不同的shuffle,你需要在某个时刻初始化随机生成器.对于某些应用程序,您需要使用自己选择的特定值进行初始化(例如,如果您希望以后能够重现结果).为此你可以使用Random.init或Random.full_init.