2017-09-27 6 views
-1

定義済みの確率に従ってリストから要素をランダムに描画する関数をPHPで記述したいと思います。例えば定義された確率に従ってリストから要素をランダムに描画する方法

:入力(x = 20, y = 15, z = 35, t = 30)と引数について

、関数はxの20%の確率を有するべきである、T

するY 15%、Z 35%と30%の任意のアイデア?

+0

実際のランダム性の重み付けをしたいのですか、それとも100倍以上の確率でそれらのオッズを適用したいですか? – Calimero

+2

何を試しましたか?コードはどこですか? – Sammitch

+1

私はランダムな関数 –

答えて

1

重みに入力アレイマッピング要素を考えると、

['x' => 20, 'y' => 15, 'z' => 35, 't' => 30] 

ようにこの問題に対する簡単な解決策は、基本的に2つのステップである:

  1. 乱数

    $rand = rand(1, array_sum($weights)); 
    
  2. を生成

    あなたの乱数が存在するまで要素の配列=>重みを反復的に合計する前の合計と次の合計の間にある。

    $min = 0; 
    foreach ($weights as $element => $weight) { 
        $max = $min + $weight; 
        if ($rand > $min && $rand <= $max) { 
         // $element is the one you want 
        } 
        $min = $max; 
    } 
    

限り関数にそれを作るとして、それまでもう少しあります、あなたはあなたの入力は100、などにつながりますことを検証することもできますが、あなたはおそらく、より良いアイデアを持っていますどのように私が行うよりもその部分を働かせたい。

+0

を使ってrand(0,100)をしたい!ありがとうございます –

+0

ようこそ。 –

関連する問題