Heim  >  Artikel  >  Backend-Entwicklung  >  Einige Ideen zur Generierung von Zufallszahlen mit ungleichen Wahrscheinlichkeiten

Einige Ideen zur Generierung von Zufallszahlen mit ungleichen Wahrscheinlichkeiten

巴扎黑
巴扎黑Original
2016-11-29 10:23:011534Durchsuche

Titel: Generieren Sie Zufallszahlen von 0 bis 9, wobei die Eintrittswahrscheinlichkeit von 0 bis 9 in der Reihenfolge abnimmt

Die allgemeine Idee besteht darin, 10 0er, 9 1er, 8 2er... zu setzen. Fügen Sie 2 8er und 1 9 in das Array ein, generieren Sie dann zufällig den Array-Index und extrahieren Sie die Zahl entsprechend dem Index.

Zweite Idee: Generieren Sie zwei Zufallszahlen von 0 bis 9 und nehmen Sie die kleinere. Diese Idee (vorgeschlagen durch den Zauber des Armbands) kennt das eigentliche Prinzip nicht, aber Experimente haben bewiesen, dass sie tatsächlich den Effekt erzielen kann.

Überprüfungsmethode:

Programmcode

< ;?php

function fun(){

$num = rand(0,9); //Zahlen innerhalb von 10 sind gleichmäßig verteilt

$ num2 = rand(0 ,9);

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

return $return;

}

function totalStr($haystack, $needle,$i = 0){//Überprüfen Sie, wie oft ein bestimmtes Zeichen in der Zeichenfolge vorkommt

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

$haystack = substr($haystack, (strpos($haystack,$needle) + 1));

$i++;

}

return $i;

}

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

$str .= fun ();

}

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

echo totalStr($ str,"$i") ."n" //Anzahl der Vorkommen von 0-9

}

?>


Kurz nach dem Schreiben dieses Artikels verfügt der Armbandanhänger über einen optimierten Algorithmus

Einzelheiten finden Sie unten:

Programmcode

Funktion getRand($min,$max) {

$num =rand($min,$max);

return rand($min,$num);

}


Auch eine von einem anderen Experten geschriebene Funktion mit starken mathematischen Ideen und nicht leicht zu verstehen

Programmcode

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

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

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

}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn