Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menjana Nombor Rawak Berwajaran dalam PHP?
Penjanaan Nombor Rawak Berwajaran dalam PHP
Soalan:
Bagaimana anda boleh menjana nombor rawak antara 1 dan 10, tetapi dengan kebarangkalian yang lebih tinggi untuk memilih nombor 3, 4, dan 5 berbanding 8, 9, dan 10 dalam PHP?
Jawapan:
Untuk mencapai rawak wajaran ini, anda boleh menggunakan tatasusunan bersekutu yang memetakan setiap hasil yang diingini kepada beratnya. Dalam kes ini, anda boleh membuat tatasusunan dengan 3, 4 dan 5 mempunyai pemberat yang lebih tinggi (mis., 3 - 50%, 4 - 30%, 5 - 20%) daripada 8, 9 dan 10 (mis., 8 - 10 %, 9 - 5%, 10 - 5%).
Berdasarkan pemberat yang diberikan, anda boleh menjana nombor rawak menggunakan mt_rand dalam julat jumlah pemberat. Kemudian, gelung melalui tatasusunan dan tolak setiap nilai berat daripada nombor rawak sehingga ia menjadi negatif. Kunci tatasusunan sepadan dengan berat yang menjadikan nombor rawak negatif ialah hasil yang diingini.
Berikut ialah fungsi PHP yang melaksanakan rawak wajaran ini:
/** * 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; } } }
Atas ialah kandungan terperinci Bagaimana untuk Menjana Nombor Rawak Berwajaran dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!