.net C# 抽奖,中奖
demo设置了8个奖项,每个奖项可以自定义中奖率,精度为1/10000
public string PrizeDraw()
{
//奖品以及中奖率
const string prizeString = "奖品一:33,奖品二:30,奖品三:9,奖品四:8,奖品五:7,奖品六:6,奖品七:5,奖品八:2";
//将中奖率*100再取整,放在数组中,并从小到大排序
var prizeArray = prizeString.Split(',').Select(j => new { Prize = j.Split(':')[], Change = (int)(double.Parse(j.Split(':')[])* ) }).OrderBy(j => j.Change).ToArray();
//将中奖率累加,放到字典里
var prizeDictionary = new Dictionary<string, int>();
for (var i = ; i < ; i++)
{
var allChange = ;
for (var j = ; j <= i; j++)
{
allChange += prizeArray[j].Change;
}
prizeDictionary.Add(prizeArray[i].Prize, allChange);
}
//产生一个1-10000的随机数
var rd = new Random();
var rdChange = rd.Next(, );
//找第一个大于随机值的奖项
return prizeDictionary.First(j => j.Value >= rdChange).Key;
}
.net C# 抽奖,中奖的更多相关文章
- PHP+jQuery实现翻板抽奖(中奖概率算法)
在电视节目中有一种抽奖形式暂且叫做翻板抽奖,台上有一个墙面,墙面放置几个大方块,主持人或者抽奖者翻开对应的方块即可揭晓中奖结果.类似的抽奖形式还可以应用在WEB中,本文将使用PHP+jQuery为您讲 ...
- PHP+jQuery实现翻板抽奖
翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息.看似简单的一个操作过程,却包含着WEB技术的很多知识面 ...
- 基于Map的用户注册、登录、抽奖系统
期望功能 方法设计 1.类的设计: 定义两个参与者的属性: private String username; private String userpassword; 2.注册方法: public v ...
- 王之泰201771010131《面向对象程序设计(java)》第二周学习总结
王之泰201771010131<面向对象程序设计(java)>第二周学习总结 第一部分:理论知识学习部分 第三章 第三章内容主要为Java语言的基础语法,主要内容如下 1.基础知识 1.1 ...
- Notes 20180308 : 语句
在讲解流程控制语句之前,我们先来说一下语句的问题.Java中的语句分为声明和赋值语句,条件和循环语句,调用和返回语句:我们之所以每两个放在一起是有深意的,我们大致将语句分为这三块,并以此为纲来说一下, ...
- 扎西平措 201571030332 《面向对象程序设计 (JAVA)》第二周 学习总结
面向对象程序设计 (JAVA)>第二周 学习总结 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这 ...
- 201871010123-吴丽丽《面向对象程序设计(java)》第二周学习总结
201871010123-吴丽丽<面向对象程序设计(java)>第二周学习总结 项目 这个作业属于哪个课程 h ...
- 201871010112-梁丽珍《面向对象程序设计(java)》第二周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...
- 201871010101-陈来弟《面向对象程序设计(java)》第二周学习总结
201871010101-陈来弟<面向对象程序设计(java)>第二周学习总结 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs ...
随机推荐
- 类ThreadLocal的使用与源码分析
变量值的共享可以使用public static的形式,所有的线程都使用同一个变量.如果每个线程都有自己的共享变量,就可以使用ThreadLocal.比如Hibernat的session问题就是存在Th ...
- Debian9 使用 Docker 安装 gitlab完整过程
一. 安装Docker CE (参考 官网指南) 1. 卸载老版本 sudo apt-get remove docker docker-engine docker.io 2. Update the ...
- nc替代技术方案
powershell $client = New-Object System.Net.Sockets.TCPClient('127.0.0.1',4444);$stream = $client.Get ...
- Java的static类
首先Java的static类只能是静态内部类.如果在外部类声明为static,程序会编译通不过. 其次,主要了解下static内部类与普通内部类的区别是什么,以及static内部类的作用是什么,详见下 ...
- HAProxy详解(二):HAProxy基础配置与应用实例
一.HAProxy基础配置与应用实例: 1.快速安装HAProxy集群软件: HAProxy的官网: https://www.haproxy.org/#down下载HAProxy的源码包. 安装: [ ...
- HTTP协议02-请求和响应的报文构成
HTTP协议和TCP/IP协议族内的其他众多协议相同,用于客户端与服务器之间的通信,请求访问文本或图像等资源的一端+称为客户端,而提供资源响应的一端称为服务端. 应用HTTP协议时,请求必定是客户端发 ...
- Python3学习笔记01-环境安装和运行环境
最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...
- TextArea 保存时换行符处理
后台数据保存时就要处理“\r\n",替换成”<br />",前台(html)页面显示时再做下处理. 自己是mvc页面,用到了两个方法:Html.Raw(),以及Http ...
- ABP 框架从源码学习——abp框架启动和结束(1)
1.abp框架的启动是从Global.asax文件的Application_Start启动的,当然代表Global的application必须从AbpWebApplication继承: publ ...
- ROS入门学习
ROS学习笔记 ROS入门网站; ROS入门书籍 ROS主要包含包括功能包.节点.话题.消息类型和服务; ROS功能包/软件包(Packages) ROS软件包是一组用于实现特定功能的相关文件的集合, ...