1

Matlabの数値のセットからランダムな数値を生成できる関数があるかどうかを知りたいですか?たとえば、セット[-11]があるとします。そのセットから数値を生成するにはどうすればよいですか?randi([-1,1])を使用しようとしましたが、明らかに-1,0と1の数値が生成されます。0を使用せずに、-1と1のみを含めて均一に数値を生成したいと思います。事前にお詫び申し上げます。これは些細な質問のように思えますが、答えが見つからないようです。

あなたが提供できるどんな助けにも感謝します。

編集:上記の簡単な解決策を見つけました:(randi([0 1])* 2)-1.これはこの問題を解決するだけで、指定されたセットからの数値の生成は解決しません。

4

3 に答える 3

2

さて、セット1:2から、または一般にセット1:nから整数を均一に生成できる関数はありますか?ここで、nはセット内の要素の数です。(はい)

上記の答えが「はい」の場合、それらの数値を生成されたセットのインデックスとして使用できますか?(はい)

A = [-1 1];
n = numel(A);
A(ceil(rand*n))

ランダムかつ均一にサンプリングしますか?(はい)

于 2012-05-03T17:09:55.997 に答える
1

1からNの範囲の均一なランダム整数を生成します(Nはセットのサイズです)。次に、それを使用してセットにインデックスを付けます。

于 2012-05-03T17:03:45.680 に答える
0
>> S = sign(rand(1,10) - .5); S(S ~= 0)

ans =

     1    -1     1     1    -1     1    -1    -1     1    -1

これは明らかに特定の例に特化していますが、同じ一般的な概念を適用できます。

編集:これはより一般的な例です:

>> Set = [1 10 100]

Set =

     1    10   100

>> Set(randi([1 3], 10, 1))

ans =

   100   100   100   100   100    10    10     1   100     1
于 2012-05-03T17:12:15.417 に答える