random之OCaml : exception Invalid_argument ("Random.int") 的解决方法是什么
findumars
阅读:120
2025-06-02 22:19:02
评论:0
我有这段代码:
let rec random_list = function
| 0 -> []
| n -> ( Random.int max_int ) :: ( random_list (n-1) )
它可以编译,但是当我执行它时,会出现此错误:
exception Invalid_argument("Random.int")
这个问题的解决方法是什么?
请您参考如下方法:
Random.int boundreturns a random integer between0(inclusive) andbound(exclusive).boundmust be greater than0and less than2^30.
所以最接近你想要的是:
let my_max_int = (1 lsl 30) - 1 in
Random.int my_max_int
正如 gsg 建议的那样,使用
Random.bits ()更清洁以获得几乎相同的结果(它也可以返回
2^30 - 1 )。
如果你真的想得到任何正的 native 整数,也许你可以使用
Random.nativeint ,但这意味着您必须使用模块
Nativeint和
Nativeint.t而不是
int .
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



