Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menjana Nombor Rawak dalam PHP dengan Kebarangkalian Berwajaran?
Menjana Keputusan Rawak dengan Kebarangkalian Wajaran dalam PHP
Penjanaan nombor rawak dalam PHP didokumenkan dengan baik. Walau bagaimanapun, mencapai rawak dengan kebarangkalian yang telah ditetapkan memerlukan pendekatan tambahan. Soalan ini memfokuskan pada penjanaan nilai rawak antara 1-10 dengan kebarangkalian yang lebih tinggi untuk mendapatkan 3, 4, dan 5 daripada 8, 9 dan 10.
Melukis inspirasi daripada cadangan @Allain, fungsi tersuai telah dibangunkan untuk memudahkan rawak berwajaran ini dalam PHP:
/** * getRandomWeightedElement() * Utility function for getting random values with weighting. * Pass in an associative array, such as array('A'=>5, 'B'=>45, 'C'=>50) * An array like this means that "A" has a 5% chance of being selected, "B" 45%, and "C" 50%. * The return value is the array key, A, B, or C in this case. Note that the values assigned * do not have to be percentages. The values are simply relative to each other. If one value * weight was 2, and the other weight of 1, the value with the weight of 2 has about a 66% * chance of being selected. Also note that weights should be integers. * * @param array $weightedValues */ function getRandomWeightedElement(array $weightedValues) { $rand = mt_rand(1, (int) array_sum($weightedValues)); foreach ($weightedValues as $key => $value) { $rand -= $value; if ($rand <= 0) { return $key; } } }
Dalam fungsi ini, input ialah tatasusunan bersekutu di mana kunci mewakili hasil yang diingini, dan nilainya adalah kebarangkalian yang sepadan. Kebarangkalian ini tidak semestinya peratusan tetapi relatif antara satu sama lain.
Dengan menggunakan gabungan penjana nombor rawak PHP (mt_rand()) dan pendekatan kebarangkalian kumulatif, fungsi memilih nilai rawak daripada tatasusunan berdasarkan kebarangkalian yang ditetapkan. Ini membolehkan penjanaan hasil rawak dengan berat sebelah yang ditentukan pengguna, menjadikannya alat yang serba boleh dan berkesan untuk pelbagai aplikasi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Nombor Rawak dalam PHP dengan Kebarangkalian Berwajaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!