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);
Şahanesin ellerine sağlık array_diff bunu not aldım