C# 随机概率问题 奖品1 出现概率为 1/10000奖品2 出现概率为 1/1000奖品3 出现概率为 1/100鼓励奖1 ,鼓励奖2我想请教各位.怎么控制他们的随机概率问题.. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Radom r=new Radom(0,1000)if(r.Next()<1)这个是千分一 两种方法: 1、 定义一个最大区间,如100000,新建一个区间数组,如a[10,110,1110,100000],然后出0~100000的随机数,在哪个区间就是哪个。 注意:区间的差值/最大上限=目标概率 (要判断是哪个区间,只要for循环一下取第一个 a[i]<[随机数] 的i+1 即可)2、 定义一个大数组,如a[100000],按照概率往里填充目标值,如a[1,1,1, …… 2,2,…… ,5,……],然后打乱(随你怎么打乱都行),再出0~99999的随机数n,取a[n]即可。 注意:所有概率和必须等于1,不要漏掉你不必控制出现 “未中奖” 的概率。当然,如果你有历史出现记录,还可以在取到出现值后再判断一次,超出概率范围就重出。 如何将自己的电脑架设成服务器供网络上访问? asp.net文件上传 诡异问题求解 帮我看一下这个循环,我绑定的数据集! 多表备份与还原的问题,麻烦大家看看,谢谢 企业信息文档管理系统 请教! 急!急!急! 哥哥,小妇子还有一事要问!! fileupload如何限制上传的文件类型 datagrid能不能做一个统计的记录? 关于csdn首页的6个图片 关于FileUpload
if(r.Next()<1)这个是千分一
1、 定义一个最大区间,如100000,新建一个区间数组,如a[10,110,1110,100000],然后出0~100000的随机数,在哪个区间就是哪个。
注意:区间的差值/最大上限=目标概率 (要判断是哪个区间,只要for循环一下取第一个 a[i]<[随机数] 的i+1 即可)2、 定义一个大数组,如a[100000],按照概率往里填充目标值,如a[1,1,1, …… 2,2,…… ,5,……],然后打乱(随你怎么打乱都行),再出0~99999的随机数n,取a[n]即可。
注意:所有概率和必须等于1,不要漏掉你不必控制出现 “未中奖” 的概率。当然,如果你有历史出现记录,还可以在取到出现值后再判断一次,超出概率范围就重出。