2017-01-02 18 views
1

乱数を生成し、最大値に近づく確率はx%です。確率を持つ乱数

問題は、私はいくつかの手順を実行しない限り、これを行う方法がわかりません。

だが、私はこれは、例えば2700年を返します。1と3000

$number = mt_rand(1, 3000) 

の間の乱数を生成しますとしましょう。私はそれが3000より1に近づきたいと思っています。

3000に近づく確率は10%に過ぎません。

+0

あなたは「3000近く」を説明できますか?それは「2500-3000」か「2900-3000」の間ですか? – Dekel

+0

可能な限り最小限の可能性があります(1-100の範囲を考えましょう)が、3000に近い10%のチャンス(1000-3000の範囲)を持っています。 – Iulian

+0

質問は範囲をどのように分割するかです...正確には「3000近く」です(これはまだ答えられませんでした) – Dekel

答えて

0

質問のコメントに基づいて、mt_rand機能を2回使用することができます。最初に、それが90%(値が1から100までのランダムな値)でなければならないかどうかをチェックし、そうでなければ1-3000のランダムな値である残りの10%であることを確認します:

$number = mt_rand(0, 9) == 0 ? mt_rand(1, 3000) : mt_rand(1, 100); 
+0

素晴らしいアイデア。どうもありがとうございました。 – Iulian

+0

ようこそ。お役に立てて嬉しいです! – Dekel

関連する問題