XAWeb adlı üyeden alıntı: mesajı görüntüle
O mantıkta olmuyor evet çalışır da yapmak istediğim o değil..
1 gelme olasılığı %50
2 gelme olasılığı %30
3 gelme olasılığı %100
4 gelme olasılığı %10
5 gelme olsuluğı %60
diyelim. Bunları array içine 1 i 50 defa, 2 yi 30 defa, 3 ü 100 defa push ettiriyorum sonra random olarak ekrana basıyorum ama işte benzersiz olma koşulunu koyamıyorum... Çıldırttı..
Yanlış anlamadıysam bu push edilen veriler arasından 3 tane seçilecek. Ama aynı iki şey gelmeyecek? Şöyle yapılabilir:
$oranlar = [
'1' => 50,
'2' => 30,
'3' => 100,
'4' => 10,
'5' => 60
];
$secim_sayisi = 3;

$arr = [];

foreach($oranlar as $sayi => $oran) {
 $arr = array_merge($arr, array_fill(0, $oran, $sayi));
}

$secimler = [];

for($i = 0; $i < $secim_sayisi; $i++) {
 $secim = $arr[array_rand($arr)];
 $arr = array_diff($arr, [$secim]);
 array_push($secimler, $secim);
}
print_r($secimler);