平均値が 50 で標準偏差が 16 になるように、30 から 88 までの数値を 100 個生成したいと考えています。この問題を解決するアルゴリズムはありますか?
3 に答える
100 個の数値を実際に生成する必要はないと思います。与えられた平均と標準偏差で、与えられた境界の間で乱数を生成するアルゴリズムが必要だと思います。
正規分布 (@Robert Harvey が提案) を持つ数値を生成してみて、範囲外の数値を破棄することができます。擬似コード:
do {
x = Generate_Random_Number_Normal_Distribution(mean = 50, STD = y);
} while (!(x >= 30 && x <= 88));
= 16 の場合y
、結果の標準偏差は希望よりわずかに小さくなります。必要な標準偏差を得るには、パラメーターを増やす必要がありy
ます。
しかし、どのくらい増やすのですか?これは試行錯誤によって決めることができます: のさまざまな値をテストしy
、たとえば 1000000 の数値を生成し、それらの標準偏差を計算し、それが目的に十分近いかどうかを調べます。
何が何でy
あるかがわかったら、それを定数にすると、50 個の数字を生成するアルゴリズムが得られます。
100の数字 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 , 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 , 66, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34 , 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34 、および 34 は 30 から 88 の間にあり、平均は 50、標準偏差は 16 です。
それらを生成する方法は明らかです。あなたの実際の問題には、あなたが述べていない他の基準があると思います。