php随机抽奖
php
按照设定的概率,得到随机抽奖的结果。
<?php /** * 抽奖工具 */ class lottery_tool { protected static $awardsArr; protected static $proField = 'probability'; protected static $proSum = 0; protected static $checkAward = false; const SUCCESS_CODE = 0; const FAIL_CODE = -1; //检查抽奖数据 protected static function checkAwards(){ if (!is_array(self::$awardsArr) || empty(self::$awardsArr)) { return self::$checkAward = false; } self::$proSum = 0; foreach (self::$awardsArr as $_key => $award) { self::$proSum += $award[self::$proField]; } if (empty(self::$proSum)) { return self::$checkAward = false; } return self::$checkAward = true; } protected static function successRoll($rollKey){ return array('code' => self::SUCCESS_CODE, 'roll_key' => $rollKey, 'msg' => 'roll success'); } protected static function failRoll($msg = 'roll fail'){ return array('code' => self::FAIL_CODE, 'msg' => $msg ); } //抽奖 public static function roll () { if (false == self::$checkAward) { return self::failRoll('awards data is not the right format!'); } $result = mt_rand(0, self::$proSum); $proValue = 0; foreach (self::$awardsArr as $_key => $value) { $proValue += $value[self::$proField]; if ($result <= $proValue) { return self::successRoll($_key); } } return self::failRoll('wrong'); } //改变概率字段名 public static function setProField($field = null) { if (!empty($field)) { self::$proField = $field; } } //设置奖品 public static function setAwards($awards){ self::$awardsArr = $awards; self::checkAwards(); } }
ログイン後にコピー
forexample
$awards = array( '0' => array('pro' => 15, 'info' => '15%的可能性'), '1' => array('pro' => 25, 'info' => '25%的可能性'), '2' => array('pro' => 40, 'info' => '40%的可能性'), '3' => array('pro' => 20, 'info' => '20%的可能性'), ); lottery_tool::setProField('pro'); lottery_tool::setAwards($awards); $result = array(); for ($i = 10000; $i --;) { $result[] = lottery_tool::roll(); } foreach ($result as $key => $value) { $awards[$value['roll_key']]['num'] ++; } echo '<pre class="brush:php;toolbar:false">'; var_dump($awards); //结果: array 0 => array 'pro' => int 15 'info' => string '15%的可能性' (length=15) 'num' => int 1596 1 => array 'pro' => int 25 'info' => string '25%的可能性' (length=15) 'num' => int 2484 2 => array 'pro' => int 40 'info' => string '40%的可能性' (length=15) 'num' => int 3939 3 => array 'pro' => int 20 'info' => string '20%的可能性' (length=15) 'num' => int 1981
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
2週間前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
1週間前
By DDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
Atomfallのクレーンコントロールキーカードを見つける場所
1週間前
By DDD

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー
