タイトル: 0 から 9 までの発生確率が順番に減少するように、0 から 9 までの乱数を生成します。
一般的なアイデアは、0 を 10 個、1 を 9 個、2 を 8 個...8 を 2 個、1 個に 9 を入れます。配列を作成し、配列の添字をランダムに生成し、その添字に従って数値を抽出します。
2 番目のアイデア: 0 から 9 までの 2 つの乱数を生成し、小さい方を取得するこのアイデア (ブレスレット チャームによって提案された) は実際には私です。原理は不明ですが、実際に効果が得られることが実験で証明されました
検証方法:
プログラムコード
function fun(){
$num = rand( 0,9); //10 以内の数値は均等に分布します
$num2 = rand(0,9);
($num2<=$num) ? $return.=$num;
return $return ;
}
function totalStr($haystack, $needle,$i = 0){//文字列内に特定の文字が出現する回数を確認します
while(strpos($haystack,$針) !== false) {
$haystack = substr($haystack, (strpos($haystack,$needle) + 1)); $i<=1000;$i++){
$str .= fun();
}
for ($i=0;$i<=9;$i++){
echo totalStr($str ,"$i")."n"; 0-9 の出現回数
}
?>
この記事を書いた直後に、ブレスレット マジック アルゴリズムが最適化されました詳細については、以下を参照してください: プログラム コードfunction getRand($ min、$ max){使用の使用もあります。 =2){
$c = rand(0, pow($max,$factor));
return $max - ceil(pow($c,1/$factor));
}