Some ideas on generating random numbers with unequal probabilities

巴扎黑
Release: 2016-11-29 10:23:01
Original
1417 people have browsed it

Title: Generate random numbers from 0 to 9. The probability of occurrence from 0 to 9 is required to decrease in sequence.

The general idea is to put 10 0s, 9 1s, 8 2s...2 8s, and 1 Put 9 into the array, then randomly generate the array subscript, and extract the number according to the subscript.

Second idea: Generate two random numbers from 0 to 9, and take the smaller one. This idea (proposed by the bracelet magic) is actually I don’t know what the principle is, but experiments have proved that it can indeed achieve the effect.

Verification method:

Program code

function fun(){

  $num = rand(0,9); //Numbers within 10 are evenly distributed

$num2 = rand(0,9);

($num2<=$num) ? $return.=$num2 : $return.=$num;

return $return ;

}

function totalStr($haystack, $needle,$i = 0){//Check the number of times a certain character appears in the string

while(strpos($haystack,$needle) !== false) {

                    $haystack = substr($haystack, (strpos($haystack,$needle) + 1)); i=0 ;$i<=1000;$i++){

$str .= fun();

}

for ($i=0;$i<=9;$i++){

echo totalStr($str ,"$i")."n"; //The number of occurrences of 0-9

}

?>

Shortly after writing this piece, the bracelet magic algorithm has been optimized

For details, see Below:

Program code

function getRand($min,$max) {


                                                                                      using   using        .

There is also a function written by another expert, which has strong mathematical ideas and is not easy to understand.

Program code

function getRandomByFactor($max,$factor=2){

$c = rand(0, pow($max,$factor));

return $max - ceil(pow($c,1/$factor));

}

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!