0

入力として、x と y の 2 つの数値があります。x>y. y合計が に等しいゼロ以外の乱数を正確に作成したいと思いますx。私はrandi([min max])機能を知っています。手伝って頂けますか?

4

3 に答える 3

4

私が正しければ、次のようなものが必要です。

data = rand(1,y);
data = data * x / sum(data);

dataには、y合計が に等しい正の一様分布数が含​​まれxます。

于 2013-01-04T22:24:53.367 に答える
2

Matlab FEXで固定和を使用したファイル ランダム ベクトル ジェネレーターを確認してください。これであなたの質問に答えられると思います。

于 2013-01-04T22:19:50.210 に答える
0

Leonid のアプローチは、正しい合計を持つ一連の乱数を確実に生成しますが、許容される空間を均一に選択することはありません。これが重要な場合、有効なアプローチは次のとおりです。

(x = 1 の場合):

  1. [0,1] で一様に Y-1 乱数を生成します。
  2. Y-1 の数値を最小から最大に並べ替えます。これらを {y1,...,y_{N-1}} と呼びます
  3. Y 乱数としてセット {y_1-0 ,y_2-y1,...,1-y_{N-1}} == {n_1,... n_Y} を取ります。

これらの n_i の合計は明らかに 1 になります。n_i の特定の実現の確率を考慮することで、一様性を証明するのは簡単です。

于 2013-02-20T18:58:39.653 に答える