2015-06-29 3 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 
} 

[EDITED]

ОК, вот как далеко я могу добраться. эта функция делает именно то, что я хочу. Но мой вопрос с самого начала: как упростить эту функцию?

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]. Вы говорите о шансах, например, против против 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)]; 
} 
Смежные вопросы