2017-01-13 3 views
2

数字とNaNの両方を含む有限集合から要素を無作為に選んで乱数生成手順をシードしたいと思います。データをランダムにサンプリングする方法はありますか?

これまでのところ私はそれを播種せずに動作させることができます。

Error using datasample (line 89) 
Sample size K must be a non-negative integer. 
:私は次のエラーを取得する

seed = rng(100); 
sample = datasample(seed, data, 50); 

data = [0, 1, 2, 3, 4, 5, nan]; 
sample = datasample(data, 50); 

を私は数世代をシードしたい場合の構文が(*)の場合でも

[y,...] = datasample(s,data,k,...) 

も試してみましたが、同様の結果が得られました。

(*)https://it.mathworks.com/help/stats/datasample.html

答えて

3

ドキュメントは、第1の入力についてスーパー明示的ではありません。あなたはrngが発生structではなく、最初の入力引数としてRandStreamオブジェクトを渡す必要があります(追記として、rngの出力がない新しい設定を設定以前です)。ここで

あなたの代わりにシードを指定するrngを使用する場合は、あなたがrngを呼び出してから、現在の世界的なランダムを取得するためにRandStream.getGlobalStreamを使用することができますが、

stream = RandStream('mt19937ar', 'Seed', 100); 
output = datasample(stream, data, k); 

を行うにしようとしていた思われるものに相当しますその後、からdatasampleに渡します。これは、datasampleが提供されていない場合には、グローバル乱数ストリームを使用する予定であるため、やや減少します。

rng(100) 
stream = RandStream.getGlobalStream(); 
output = datasample(stream, data, k); 
+0

ドキュメントのバグのようです。 'rng'は' RandStream'オブジェクトを返しません。 'datasample'はフードの下で' randi'を呼び出します。これは 'RandStream'オブジェクトだけを受け付けます(これはドキュメントには書かれていませんが)。 – horchler

+1

@horchler他の関数( 'randsample'のような)はこれを明示的に言及しているので、おそらくそれはバグです。 – Suever

+0

ありがとう、それは完全に動作します。私の究極の目的は、ランダムに選ばれた数と 'NaN'を含む配列を生成することでした。あなたは私の処置がその目的のために受け入れられるのを見いだしますか –

関連する問題