1. ホーム
  2. matlab

[解決済み] MATLAB: 母集団からランダムに何度もサンプリングする?

2022-02-27 16:38:45

質問

私は、MATLABの datasample を選択することができます。 k 回から population . 仮に population=[1,2,3,4] で、置換ありで一様にサンプリングしたい。 k=5 回からです。

datasample(population,k)
ans =
   1     3     2     4     1

さて、上記の実験を繰り返してみたいと思います N=10000 を、forループを使わずに、何度も実行します。してみました。

datasample(repmat(population,N,1),5,2)

しかし、私が得た出力は(以下、ほんの短い抜粋です)。

 1     3     2     1     3
 1     3     2     1     3
 1     3     2     1     3
 1     3     2     1     3
 1     3     2     1     3
 1     3     2     1     3
 1     3     2     1     3
 1     3     2     1     3
 1     3     2     1     3

どの行も(実験結果)同じ!?でも、明らかに違うはずなのに...。まるで、ランダムな種が行間で更新されていないかのようです。どうすればこれを修正できるのでしょうか?あるいは、forループを回避できる他の方法があれば教えてください。ありがとうございます。

どのように解決するのですか?

datasample は、データの各列を母集団の1つの要素として解釈し、すべての列からサンプリングします。

これを修正するために datasample N回ループして、代わりに randi

population(randi(numel(population),N,5))

母集団が常に1:pであると仮定すると、次のように単純化することができます。

randi(p,N,5)