入力として、x と y の 2 つの数値があります。x>y
. y
合計が に等しいゼロ以外の乱数を正確に作成したいと思いますx
。私はrandi([min max])
機能を知っています。手伝って頂けますか?
質問する
1459 次
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 の場合):
- [0,1] で一様に Y-1 乱数を生成します。
- Y-1 の数値を最小から最大に並べ替えます。これらを {y1,...,y_{N-1}} と呼びます
- 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 に答える