OCaml的解决方法是什么:异常Invalid_argument(“Random.int”)?

时间:2015-06-16 12:41:59

标签: random int arguments ocaml

我有这段代码:

exception Invalid_argument("Random.int")

编译好了,但是当我执行它时,会出现此错误:

attributes: {
  username: {
    type: 'string',
    required: true
  },

  firstname: {
    type: 'string',
    required: true
  },

  lastname: {
    type: 'string',
    required: true
  },

  email: {
    type: 'string',
    email: 'true',
    required: true,
    unique: true
  },

  buddy: {
    collection: "Buddy",
    via: "buddyOf"
  }
}

此问题的解决方法是什么?

1 个答案:

答案 0 :(得分:8)

documentation说:

  

Random.int bound返回0(包括)和bound之间的随机整数(不包括)。 bound必须大于0且小于2^30

所以最接近你想要的是:

let my_max_int = (1 lsl 30) - 1 in
Random.int my_max_int

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

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