ホームページ  >  記事  >  バックエンド開発  >  不等確率の乱数を生成するためのアイデア

不等確率の乱数を生成するためのアイデア

巴扎黑
巴扎黑オリジナル
2016-11-29 10:23:011489ブラウズ

タイトル: 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));

}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。