Ste*_*anu 2 random int ocaml arguments
我有这段代码:
let rec random_list = function
| 0 -> []
| n -> ( Random.int max_int ) :: ( random_list (n-1) )
Run Code Online (Sandbox Code Playgroud)
编译好了,但是当我执行它时,出现此错误:
exception Invalid_argument("Random.int")
Run Code Online (Sandbox Code Playgroud)
这个问题的解决方法是什么?
该文件说:
Random.int bound返回0(包含)和bound(不包括)之间的随机整数.bound必须大于0和小于2^30.
所以最接近你想要的是:
let my_max_int = (1 lsl 30) - 1 in
Random.int my_max_int
Run Code Online (Sandbox Code Playgroud)
正如gsg建议的那样,使用Random.bits ()更清洁来获得几乎相同的结果(它也可以返回2^30 - 1).
如果你真的想得到任何正的原生整数,也许你可以使用Random.nativeint,但这意味着你必须使用模块Nativeint而Nativeint.t不是int.