PHPで簡単に体重を計算する方法(宝くじ用途に最適)

WBOY
リリース: 2016-06-21 08:49:09
オリジナル
1107 人が閲覧しました

最近、プロジェクトの要件により、ユーザーが宝くじをクリックすると、3 つの異なる結果が返される (つまり、賞: 1 等、2 等、3 等、宝くじありがとう) を構築する必要があります。 ) 当然、賞品の出現確率は徐々に低下します。これには、重み計算と同様のアルゴリズムが必要です。ニーズに基づいて長い間考えた結果、最終的には単純な重み計算方法で問題を解決しました。確率はまだ予想の範囲内です。

この重み計算方法の概要は以下の通りです。

まず、この例は 1 次元が数値インデックスである 2 次元配列にのみ適しています。データ配列の構造は次のとおりです。

$data=array(
	0=>array('id'=>1,'name'=>'一等奖','weight'=>'5'),
	1=>array('id'=>2,'name'=>'二等奖','weight'=>'10'),
	2=>array('id'=>3,'name'=>'三等奖','weight'=>'25'),
	3=>array('id'=>4,'name'=>'谢谢抽奖','weight'=>'60')
);
ログイン後にコピー

以下は重みを計算するための簡単なアルゴリズムです

// 权重数值越高,被返回的概率越大
// author www.Alixixi.com
function countWeight($data){
	$weight=0;
	$temp=array();
	foreach($data as $v){
		$weight+=$v['weight'];
		for($i=0;$i<$v['weight'];$i++){
			$temp[]=$v;//放大数组
		}
	}
	$int=mt_rand(0,$weight-1);//获取一个随机数
	$result=$temp[$int];
	return $result;
}
ログイン後にコピー

計算結果は次のように返されます:

配列 (
[id] => 4
[名前] => 抽選ありがとうございます
[体重] => 60
)



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート