Kaedah dalam PHP untuk mengawal susunan penampilan elemen tatasusunan berdasarkan kebarangkalian: Mengganggu susunan tatasusunan: gunakan fungsi shuffle(). Tetapkan kebarangkalian: Gunakan array_map() untuk menetapkan kebarangkalian (0-1) kepada setiap elemen. Isih tatasusunan berwajaran: Isih tatasusunan dalam tertib menurun kebarangkalian (elemen dengan kebarangkalian lebih tinggi dahulu). Ekstrak elemen: Ekstrak elemen daripada tatasusunan yang diisih mengikut turutan, iaitu, berebut tatasusunan dalam susunan terkawal kebarangkalian.
Menggunakan kawalan kebarangkalian dalam PHP untuk mengganggu susunan penampilan elemen tatasusunan
Mengganggu susunan elemen tatasusunan ialah keperluan biasa dalam banyak senario pembangunan, seperti cabutan rawak, mekanisme permainan, dsb. Jika anda perlu mengawal susunan penampilan elemen mengikut kebarangkalian selepas mengocok tatasusunan, PHP menyediakan fungsi dan kaedah yang sesuai.
Persediaan
Mula-mula, sediakan tatasusunan yang mengandungi elemen yang anda ingin berebut. Contohnya:
$array = [1, 2, 3, 4, 5];
Gunakan fungsi shuffle()
untuk mengocok tatasusunanshuffle()
函数打乱数组
shuffle()
函数可以打乱数组中元素的顺序。
shuffle($array);
使用概率控制元素出现的顺序
使用 array_map()
Fungsi shuffle()
boleh mengocok susunan elemen dalam tatasusunan. $probabilities = [0.2, 0.3, 0.4, 0.5, 0.6];
$weightedArray = array_map(function ($element, $probability) {
return [$element, $probability];
}, $array, $probabilities);
Gunakan kaedah array_map()
untuk melintasi elemen tatasusunan dan tetapkan kebarangkalian kepada setiap elemen. Nilai kebarangkalian berkisar antara 0 hingga 1, di mana 0 bermakna elemen tidak akan muncul dan 1 bermakna elemen akan sentiasa muncul. usort($weightedArray, function ($a, $b) {
return $b[1] <=> $a[1];
});
Isih tatasusunan berwajaran, elemen dengan kebarangkalian yang lebih tinggi akan berada pada permulaan tatasusunan. $reorderedArray = [];
foreach ($weightedArray as $element) {
$reorderedArray[] = $element[0];
}
$items = ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5']; $probabilities = [0.2, 0.3, 0.4, 0.5, 0.6]; shuffle($items); $weightedItems = array_map(function ($item, $probability) { return [$item, $probability]; }, $items, $probabilities); usort($weightedItems, function ($a, $b) { return $b[1] <=> $a[1]; }); $drawnItems = []; for ($i = 0; $i < 3; $i++) { $drawnItems[] = $weightedItems[$i][0]; } print_r($drawnItems);
Atas ialah kandungan terperinci Bagaimana untuk mengawal susunan penampilan elemen melalui kebarangkalian selepas tatasusunan PHP dikocok?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!