1

Octaveでランダムな魔方陣を作成しようとしていて、次のようなものを試してみましたが、次のようrand(magic(3))な予期しない無限の結果が得られました。

 ans(:,:,1,1,2,1,1,1,1) =

 0.894903   0.296415   0.143990
 0.186976   0.305691   0.505485
 0.224823   0.834031   0.285508
 0.336706   0.318158   0.076293 

試してみるrand(magic(4))と、5,6,7 ...の場合、次のようなメッセージが表示されました

エラー: メモリが不足しているか、次元が Octave のインデックス タイプに対して大きすぎます

このあいまいな結果の考えられる理由は何ですか?

4

1 に答える 1

2

あなたは何をしようとしているのですか?は、すべての行と列の合計が同じ数になる 3 行 3 列の行列を作成ますmagic(3)。一様分布乱数のn次元行列を作成します。たとえば、を呼び出すと、一様に分布した数値の3次元行列が得られます。の次元は入力と一致します。つまり、返される必要があり、要素の数は になります。したがって、 の要素数はと等しくなければなりません。これを行うと、要素の数が 20 兆を超えるため、メモリが不足します。rand(x)y = rand([1,2,3])ysize(y)[1,2,3]prod(y)rand(magic(3))prod(prod(magic(3)))362880rand(magic(4))

于 2015-09-28T10:08:48.330 に答える