における単一の数字を除いて1と10の間の乱数を生成し、私は例randi([1,10])
のために使用して1と10の間の乱数を生成したいと思いますが、私は、単一の番号を除外したいと思い、7を言う - この数b
という変数で常に変更され指定されます。にMathWorks社のMATLAB
が可能で何とかやっていることですか?
における単一の数字を除いて1と10の間の乱数を生成し、私は例randi([1,10])
のために使用して1と10の間の乱数を生成したいと思いますが、私は、単一の番号を除外したいと思い、7を言う - この数b
という変数で常に変更され指定されます。にMathWorks社のMATLAB
が可能で何とかやっていることですか?
使用randsample
。例えば、7を除く、1と10の間の数を生成するために、次の操作を行います。ここ
b = 7;
x = randsample(setdiff(1:10, b), 1);
setdiff
ベクター1:10
からb
の値を除外するために使用されます。
あなたはStatistics Toolboxには、インストールされていない場合は、randsample
を使用することができるので、rand
を使用しません:統計ツールボックスのないものについては
v = setdiff(1:10, b);
x = v(ceil(numel(v) * rand));
;' –
@MohsenNosratiniaはい、あなたは正しいです。しかし、古いバージョンのMATLABには 'randi'がないことにも留意してください。 –
まあ、 'randi'はR2008bに登場し、私は統計ツールボックスを持っていない人の数が、5年以上古いバージョンでそれを持っている人よりもway拡大していると思います。 –
@EitanTが述べたように、あなたがそうするようにrandsample
を使用することができますが、私は簡単な方法でそうすることがあなたのために行うべきであると思う:
>> b = 7;
>> randsample([1:b-1,b+1:10],1)
この単純サンプル@EitanTが述べたように、 `randsample」機能が利用できない場合、ここで、
1 2 3 4 5 6 8 9 10
または同様になりアレイ[1:b-1,b+1:10]
からランダムな値を、
v = [1:b-1,b+1:10];
x = v(ceil(numel(v) * rand));
b = 1またはb = 10の場合はどうなりますか? –
結果が 'b'と等しくないようになるまで' Randi([1,10]) 'をループするだけです。 –
はい、これはプログラム内で起こりますが、私はこれを監督するつもりはありません。私はbを省略した議論を探しています。 – user1723765
@ user1723765ループとテストは自動化できます。 1は、x = V(ランディ(numelの(V))) 'を使用することができます第二の溶液のために – glglgl