Witam.
Sprawa wygląda następująco.
Losuję produkty z prawdopodobieństwem.
Sposób losowania wygląda następująco.
Suma prawdopodobieństw równa się jeden, załóżmy dla przykładu, że mam trzy produkty z odpowiadającymi im prawdopodobieństwami:
Pomarańcza = 0.6
Truskawka = 0.3
Inne = 0.1
Losuję liczbę z przedziału 0-1. Jak wypadnie 0-6 do pomarańcza, jak 7-9 truskawka itp.
Potrzebuję wylosować "x" elementów gdzie po sprawdzeniu prawdopodobieństwa do kolejnej tablicy przekazywana jest nazwa owocu.
Mam tablicę tej postaci:
Array
(
[0] => Array
(
[Owoc] => PomaraĹcza
[PrawdopodobieĹstwo] => 0.6
)
[1] => Array
(
[Owoc] => Truskawka
[PrawdopodobieĹstwo] => 0.3
)
[2] => Array
(
[Owoc] => Inne
[PrawdopodobieĹstwo] => 0.1
)
)
1
Kod jaki napisałem:
<?php
$losowana = rand(0,10)/10;
$tablica = array();
$table = array(array('Owoc'=>'Pomarańcza', 'Prawdopodobieństwo'=>0.6), array('Owoc'=>'Truskawka', 'Prawdopodobieństwo'=>0.3),array('Owoc'=>'Inne', 'Prawdopodobieństwo'=>0.1));
echo '<pre>';
echo print_r($table);
echo '</pre>';
echo '<p>Losowana: '.$losowana.'</p>';
for($i=0; $i<10; $i++)
{
$temp = rand(0,10)/10;
if($temp<=0.6)
{
$tablica[$i]=$table[0]['Owoc'];
}
else if($temp>0.6 && $temp<=0.9)
{
$tablica[$i]=$table[1]['Owoc'];
}
else
{
$tablica[$i]=$table[2]['Owoc'];
}
}
echo '<p>Tablica z prawdopodobieństwem</p>';
echo '<pre>';
echo print_r($tablica);
echo '</pre>';
Moim pytaniem jest jak to zoptymalizować przebudować tak, aby sprawdzało samo prawdopodobieństwo i wybierało dany owoc.
W tej chwili działa to głupio bo sam poprzypisywałem wartości do porównania oraz elementów jest mało.
Problem będzie jak pozmieniają się wartości prawdopodobieństwa, wtedy wszystko muszę zmieniać. Drugim problemem jest, że jak wzrośnie ilość produktów to nie będę pisał np. 100 if'ów.
Jak można to zoptymalizować przebudować.