2015-06-29 500 views
-3

如何創建概率的功能,兩個字符串 之間進行選擇與1/3之間的概率範圍,1/2,1/1,2/1,3/1概率函數

我的價值來從-2到2

之間的範圍內滑動,這是我的代碼:

$out = array('str1','str2'); 
$out = $out[array_rand($out)]; 

我想是這樣的:

$val = 0; //-2=1/3, -1=1/2, 0=1/1, 1=2/1, 2=3/1 

function random_str($val){ 
    ... 
    retunt $myRandomValue; //str1 or str2 
} 

[編輯]

好的,這裏是我能得到多遠。 這個功能正是我想要的。 但是我的問題從一開始就是: 如何簡化這個功能?

function random_str($val){ 
    if($var == '-2') { $out = array('str1','str2','str2','str2'); }else 
    if($var == '-1') { $out = array('str1','str2','str2'); }else 
    if($var == '0') { $out = array('str1','str2',); }else 
    if($var == '1') { $out = array('str1','str1','str2'); }else 
    if($var == '2') { $out = array('str1','str1','str1','str2'); } 
    retun $out[array_rand($out)]; 
} 
+0

事件的範圍概率是[0,1]。你是否在談論賠率,比如1-3 vs 3-1等? – C8H10N4O2

+0

你能詳細說明2/1和3/1會做什麼嗎? – oBo

+0

閱讀關於php rand()函數... –

回答

0

好,在這裏我只能亂離去對我自己的聲譽,但無論如何,我在stackoverflow Portugal

在這裏得到了很好的幫助是一個很好的解決方案:

function random_str($val){ 
    // padrão 
    $out = array('str1', 'str2'); 

    while ($var != 0) { 

     // menor que zero 
     if ($var < 0) { 
      array_push($out, 'str2'); 
      $var++; 
     } else { // maior que zero 
      array_push($out, 'str1'); 
      $var--; 
     } 
    } 
    return $out[array_rand($out)]; 
}