1000个人抽奖 1等级2人 2等级4人 三等奖10人
来源:互联网 发布:淘宝宝贝打不开 编辑:程序博客网 时间:2024/05/03 10:16
<?php//面试被问到的一个题目:1000个人抽奖 1等奖2人 2等奖4人 三等奖10人 //思路 循环1000个人的数组//每个人从奖券池中取一个数,如果这个数在 1,2,3,则代表中奖,取出后从奖券池中删除该奖券$allNums = 1000; //总人数$configs = ['1' => ['nums' => 2, 'owns' => []],'2' => ['nums' => 4, 'owns' => []],'3' => ['nums' => 10, 'owns' => []],];$allPages = []; //全部奖券foreach ($configs as $k => $v) {$arr[$k] = $v['nums'];for($i = 0; $i< $v['nums']; $i++){//向奖券池里面填充2个1等奖 4个2等奖 10个三等奖array_push($allPages, $k);}}$left = $allNums - array_sum($arr);for($i = 0; $i< $left; $i++){array_push($allPages, 0);//填充其他奖}shuffle($allPages);//打乱数组$wins = []; //获奖者数组for($i=0; $i< $allNums; $i++){$index = array_rand($allPages); //随机抽一张奖券 array_rand获取键$page = $allPages[$index];//通过键 获取值if(in_array($page, [1, 2, 3])){ //如果中奖$configs[$page]['owns'][] = $i;$wins[] = $i;//$wins[] = $random;}unset($allPages[$index]); //不管是否中奖 删除该奖券shuffle($allPages);//重新打乱奖券if(count($wins) >= 16){//如果已经诞生了16个得奖者 结束循环//echo '循环'.$i.'次';break;}}echo '<pre>';print_r($configs);echo '</pre>';
0 0
- 1000个人抽奖 1等级2人 2等级4人 三等奖10人
- 精明人的四个等级
- XMLHttpRequest 等级 2 介绍
- 等级
- 精明人的四个等级 收藏
- 命局里人的等级划分
- SLA 服务等级协议 - 2
- 不同css等级的人对css的看法
- 人眼对灰度等级的敏感程度
- 10月2日 c语言判断分数等级
- CMM等级2:可重复级
- openscales2.2 的初始缩放等级
- 第26课时,实践2,成绩等级
- 第26讲 项目2--成绩等级
- 新手学习wpf记录 等级2
- 关于STVP写保护等级2的问题
- 第二十六讲项目2-成绩等级
- 第26讲项目2-成绩等级
- 公共子序列
- Spring--IoC--基于XML的DI-为应用指定多个配置文件-包含关系
- 微信第三方接口
- 获取系统的基本参数
- iOS开发:The app icon set named "AppIcon" did not have any applicable content
- 1000个人抽奖 1等级2人 2等级4人 三等奖10人
- LeetCode 21. Merge Two Sorted Lists 两个有序列表合成一个
- Spider---with open() as 问题
- Android launcher3 无法单编的问题
- react-native 新建项目遇到的问题
- linux 内核模块简介
- window操作系统下scapy最新安装过程
- qt编译出错 /usr/bin/ld 找不到 -lGL
- 【TensorFlow】tf.nn.conv2d是怎样实现卷积的?