2

私はMatlabを初めて使用し、指定された範囲(つまり、0から250の間)内の数値を含むm行n列の行列を、指定されたステップ(つまり、[0:10:250])で作成しようとしています。

同等の機能または回避策はありますか?

r = randi ( [a b], m , n )

どこでステップを自分で指定できますか?

4

3 に答える 3

3

claudiop は間違いなく良い提案をしましたが、ランダムに選択したい数値のセットがある場合、これに代わる方法は、目的の数値を含むベクトルのランダムなインデックスを選択することです

nums = 0:10:250;
randIdxs = randi([1,numel(nums)],m,n);
nums(randIdxs);

numsランダムに切り替えたい数値を含むベクトルからランダムに数値を選択しています。このソリューションは、 のように、すべての数値の間に明確なパターンがない場合により便利になります[3,5,7,13,23,37]。これは素数間の明確な間隔や関数ではないため、素数をランダムに選択したい場合は、このソリューションが適しています。

更新しました

数値が多次元配列にある場合のnumel代わりに使用するように上記のコードを編集しました。length全然大した変化じゃない

于 2013-09-12T13:04:15.247 に答える
2

randiこの関数を 0 から 25 までの数値で使用し、結果に 10 を掛けることができます。

r = mystep * randi ( [a b] , m , n )
于 2013-09-12T12:59:30.877 に答える
2

固定範囲 ([ab]) のランダムな整数のセットから、スキップを伴う別のセットへの変換について考えてみましょう。乗算はスキップを処理する必要があります...その後、終了条件に注意してください:

r = 10*randi([0 25], m, n);

一般的な式はあなたに任せます...必要に応じて、これを別の関数 randi_skip() でラップできます。

于 2013-09-12T13:00:07.777 に答える