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") 

这个问题的解决方法是什么?

请您参考如下方法:

documentation说:

Random.int bound returns a random integer between 0 (inclusive) and bound (exclusive). bound must be greater than 0 and less than 2^30.



所以最接近你想要的是:
let my_max_int = (1 lsl 30) - 1 in 
Random.int my_max_int 

正如 gsg 建议的那样,使用 Random.bits ()更清洁以获得几乎相同的结果(它也可以返回 2^30 - 1 )。

如果你真的想得到任何正的 native 整数,也许你可以使用 Random.nativeint ,但这意味着您必须使用模块 NativeintNativeint.t而不是 int .


标签:Exception
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号