2016-12-10 4 views
0

だけの1と0の私の現在のコードは乱数私は成るのOCamlで行列を構築しようとしています

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

は、しかし、これが唯一の0かで配列全体をいっぱいにあります1つしかありませんが、組み合わせではなく、私が望むことをやるための方法はありますか?

+0

配列の値をマップすることができます。 – 4castle

+0

これを行うには、ネストされたforループでArray.mapを使用することをお勧めしますか? –

答えて

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

あなたはプログラムの起動時に一度これを呼び出すことができ、あなたがプログラムを実行するたびに異なる乱数を取得します。

+0

私はテストしましたが、その数は毎回同じように見えますが、それは起こるはずですか?私はそれを実行するたびに変化する方法があるかどうか疑問に思っていた。 –

+0

OCamlでゲームをやろうとしているのだが、なぜグラフィックスではなくタッグマトリックスで作業しているのだろうか。 –

+0

初期化する必要がある毎回違う数字が必要な場合は、乱数発生器。 –

関連する問題