パレート分布は、自然の中で多くのことをアップしてくる確率分布です。無限平均など、多くの特別なプロパティがあります。この課題では、この分布からサンプリングした数値を出力します。
パレート分布は、すべて1以上のx
確率で1/x
、以上であると定義されていますx
。
したがって、この分布からサンプリングされた数値は、確率1で1以上、確率1で2以上、確率1/2で3以上、確率1/3で3以上、以上です11.4の確率で正確に1 / 11.4など。
この分布をサンプリングするので、プログラムまたは関数は入力を受け取らず、上記の確率で乱数を出力します。ただし、浮動小数点インプレッションのためにプログラムが上記の確率と完全に一致しない場合は、問題ありません。詳細については、チャレンジの下部をご覧ください。
(これは正確にはアルファ1および下限1のパレート分布と呼ばれます)
以下は、この分布からの10の例です。
1.1540029602790338
52.86156818209856
3.003306506971116
1.4875532217142287
1.3604286212876546
57.5263129600285
1.3139866916055676
20.25125817471419
2.8105749663695208
1.1528212409680156
それらのうちの5つが2未満であり、5が2を超えていることに注意してください。これは平均的な結果であるため、もちろんそれよりも高い場合も低い場合もあります。
答えは、浮動小数点型、実数型、または使用する他のものの限界まで正しい必要がありますが、少なくとも3桁の10進精度で数値を表現でき、最大1,000,000の数値を表現できる必要があります。何か問題がないかわからない場合は、お気軽にお問い合わせください。
これはコードゴルフです。
不正確さに関する詳細:
各範囲のために
[a, b]
、1 <= a < b
試料は、その範囲内に入るであろう理想的な確率ということ、です1/a - 1/b
。あなたのプログラムがその範囲で番号を生成確率はでなければなりません0.001
の1/a - 1/b
。X
がプログラムの出力である場合、が必要です|P(a <= X <= b) - (1/a - 1/b)| < 0.001
。で上記の規則を適用することにより、そのノート
a=1
とb
十分に大きい、それはよりプログラムの必須出力数より大きいている場合であるか、または少なくとも確率0.999と1に等しいです。それ以外の時間は、クラッシュしInfinity
たり、出力したり、他のことをしたりします。
フォーム1/1-x
orの既存の提出物が1/x
どこにx
あるか、[0, 1)
または(0, 1)
orのランダムなフロートが[0, 1]
すべてこの要件を満たすことは確かです。