矩阵ocaml中1到0之间的随机数

时间:2016-12-10 22:16:21

标签: arrays matrix random ocaml

我正在尝试在OCaml中构建一个仅包含1和0的矩阵。我当前的代码是

let myArray = Array.make_matrix num num2 (Random.int 2) in 
  print myArray

然而,只用0或只有1填充整个阵列,而不是组合,我有办法做我想做的事吗?

1 个答案:

答案 0 :(得分:3)

是的,Array.make_matrix使用您提供的单个值填充矩阵。

你可以这样写:

let myArray =
    Array.init num
        (fun _ -> Array.init num2 (fun _ -> Random.int 2))

以下是它的外观:

# let num = 2;;
val num : int = 2
# let num2 = 3;;
val num2 : int = 3
# let myArray =
    Array.init num
        (fun _ -> Array.init num2 (fun _ -> Random.int 2));;  
val myArray : int array array = [|[|0; 1; 0|]; [|1; 1; 0|]|]
#

<强>更新

如果每次都需要不同的数字,则需要每次使用不同的种子初始化随机数生成器。一个简单的方法是:

Random.self_init ()

你可以在程序启动时调用一次,并且在程序的每次运行中都会得到不同的随机数。