2

matlab に cell 配列があり、ランダム サンプルを取得する必要がありますが、matlab の randsample() 関数は cell 配列では機能しないようです。randi() を使用して乱数を生成できますが、これは問題ありませんが、一意の数値のみが必要です。

セル配列からランダムにサンプリングするために使用できる関数はありますか、または randi() を使用して一意の数値を生成する方法を誰かに教えてもらえますか?

どうもありがとう。

4

1 に答える 1

4

randperm数字を繰り返さずにランダムな順列を生成する機能を使用できます。

たとえばP = randperm(N,K)、1 と N の間の K 個の一意の非反復数を指定します。

randperm(10,5)私に与えます:

9     2     1     6     5

randperm(10,10)私に与えます:

7     9     4     8     2     3     6     5     1    10

セル配列があるとしましょう

C = {'only','mad','dogs','and','englishmen','go','out','in','the','midday','sun'}

次に、このようなトークンを繰り返さずにランダムなフレーズのセットを生成できます

output=[];
for i=1:5
    output = [output;sprintf('%s ',C{randperm(length(C))})];
end

次のような出力が得られます

out only dogs in mad englishmen sun go and midday the 
in and the midday sun only englishmen out go dogs mad 
out midday go in dogs and only englishmen the mad sun 
the sun out mad midday englishmen go only and dogs in 
midday mad sun out dogs in and go englishmen the only 
于 2013-08-15T23:14:57.430 に答える