首页 > 编程语言 >php抽奖程序,奖品可设置数量,中奖概率可调节

php抽奖程序,奖品可设置数量,中奖概率可调节

时间:2023-04-01 13:45:37浏览次数:40  
标签:奖品 php prize probability 抽奖 prizes total name

<?php

$prizes[] = ['probability' => 0.1, 'total' => 1, 'name' => '一等奖'];
$prizes[] = ['probability' => 1, 'total' => 1, 'name' => '二等奖'];
$prizes[] = ['probability' => 1, 'total' => 1, 'name' => '三等奖'];
$prizes[] = ['probability' => 1, 'total' => 1,'name' => '四等奖'];
$prizes[] = ['probability' => 96.9, 'total' => 100,'name' => '谢谢参与'];
// 模拟 100 次抽奖
for ($i = 1; $i <= 1000; $i++) {

// 计算每个奖品的中奖概率区间
$probabilityRanges = [];
$totalProbability = 0;
foreach ($prizes as $prize) {
$totalProbability += $prize['probability'];
$probabilityRanges[] = $totalProbability;
}
$randomNumber = mt_rand(1, $probabilityRanges[count($probabilityRanges) - 1]);
$prizeIndex = -1;
for ($j = 0; $j < count($probabilityRanges); $j++) {
if ($randomNumber <= $probabilityRanges[$j]) {
$prizeIndex = $j;
break;
}
}
if ($prizeIndex == -1) {
echo "第 $i 次抽奖,未中奖与\n";
continue;
}
$prize = $prizes[$prizeIndex];
if ($prize['total'] == 0) {
echo "第 $i 次抽奖,未中奖与\n";
continue;

}
$prizes[$prizeIndex]['total']--;

if ($prize === false) {
echo "第 $i 次抽奖,未中奖与\n";
} else {
echo "第 $i 次抽奖,中奖:".$prize['name']."-".$prize['total']."\n";
}

};

echo 'end';

标签:奖品,php,prize,probability,抽奖,prizes,total,name
From: https://www.cnblogs.com/uluu/p/17278503.html

相关文章

  • php 安装扩展 event
    本地环境php8.1,然后我想安装event扩展,找了找资料,直接一句话sudopeclinstallevent然后执行的过程中提示这些configure.ac:165:thetoplevelEnableinternaldebugginginEvent[no]:EnablesocketssupportinEvent[yes]:libeventinstallationprefix[/usr]:......
  • php实现统一的curl请求
    php实现统一的curl请求functioncurl_request($url,$method='GET',$data=array(),$headers=array()){$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);//设置请求方法switch......
  • PHP 实现 PHP在线代码运行工具
    转载来源https://www.cnblogs.com/XiaoMingBlingBling/p/14651830.html demo源码下载:点击下载  HTML代码(index.html):注:代码编撰区域使用开源项目ACE(Ajax.orgCloud9Editor)实现<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8......
  • php Trait基类use trait,本类不use
    一回顾trait使用https://blog.csdn.net/bushuwei/article/details/103514174发现之前本人说明很模糊,自己居然不知道为什么其实这里的$c,就是classB再次回顾逻辑二分析self和static区别说的没毛病Trait基类usetrait,本类不use。那么如果用的newself,则你new出来的就是......
  • PHPExcel读取和设置日期格式
    1.读取excle中的日期$val=$PHPExcel_sheet->getCellByColumnAndRow(ord('I')-65,3)->getValue();echodate("Y-m-d",PHPExcel_Shared_Date::ExcelToPHP($val));die;  2.设置导出excle表格中日期格式$resultPHPExcel->getActiveSheet()->setCellValu......
  • PHP strtotime获取上个月月份的问题
    在PHP获取上个月时,我们常常使用strtotime('-1month');或者strtotime('lastmonth');来获取上个月的同一天的时间但是前28天内是没有问题的,当上个月或者下个月不存在同一天的时候,就会出现问题,如果今天是3月31日,使用该方法时取的将会是3月3日的时间,因为程序获取......
  • php站点导入大mysql文件(linux系统)
    问题描述:站点数据多,mysql导出后大于1G,使用phpmyadmin,导入一半报错,白白浪费等待时间,使用navicat导入,执行时间过长提示错误解决思路:1.拆分mysql文件,分批次导入,亲测还是比较花费时间,小于100M可以尝试,大于100M不推荐2.推荐使用进入linux系统导入mysql,步骤如下:2.1:把导出的.sql大文......
  • PHP 配置的详细记录
    PHP配置的详细记录一、php配置的目的让PHP的php-fpm(PHPFastCGI管理器)程序能更好地与nginx服务器的进行通信二、进行php配置1.php配置文件位置2.查看是否有php配置文件$cd/usr/local/php8.1/etc --进入文件夹$ls --查看文件夹里的内容php.ini --就是php的配置文......
  • 使用PHP调用OpenAI ChatGPT API接口
    本文介绍如何使用PHP调用OpenAI的文本完成模型ChatGPT的API接口,同时也包括图片生成模型DALL·E接口的调用。 一、SDK实现OpenAI的PHPSDK实现如下,其中ChatGPT使用的模型为gpt-3.5-turbo,如果已经有ChatGPTPlus,并申请到GPT-4的API权限,可以改为GPT-4的模型。classclass_openai......
  • php 浮点数转int精度丢失问题解决办法
    方案一:先将浮点金额strval后再转int。(推荐)$param['order_price']=intval(strval($param['order_price']*100)); 方案二: echoround(19.99*100); 这种方案出来是......