问题描述
50%不中奖25%优惠卷(优惠有好几种这个可以直接随机的)25%红包其中红包在25%的的比例,不是整个比例1、90到100的红包6万分之一2、80到89.99的红包5万分之一3、50到79.99的红包4万分之一4、30到49.99的红包3万分之一5、20到29.99的红包2万分之一6、10到19.99的红包1万分之一7、5到9.99的红包五千分之一8、3到4.99的红包两千分之一9、2到2.99到红包五百分之一10、1到1.99的红包一百分之一11、其余都是0.99以下求大神.....
解决方案
解决方案二:
Randomran=newRandom();intRandKey=ran.Next(0,100);生成一个随机数,0-49不中奖,50-74优惠劵。。。。如果是红包,再生成一个随机数,得到具体多少钱
解决方案三:
引用1楼u013421223的回复:
Randomran=newRandom();intRandKey=ran.Next(0,100);生成一个随机数,0-49不中奖,50-74优惠劵。。。。如果是红包,再生成一个随机数,得到具体多少钱
这个是有概率的啊不能直接用随机数
解决方案四:
0-99里面随机生成一个数,0-49不中奖,不是50%吗?生成随机数,得到的每一个数概率是一样的
解决方案五:
引用2楼z050301402的回复:
这个是有概率的啊不能直接用随机数
按比例事先生成好所有奖项对应的号码的号码池,生成的时候比率就固定好了,抽的时候只是抽这些号码而已,无论如何都不会超过该比例
解决方案六:
6万----一百全部累加,然后从0到这个数做随机就行啦...2次随机,第一次看有没有中红包,如果中了再进行第二次随机我感觉难点是...如何控制总金额(到了就抽不到大奖)...概率这个太不靠谱了
解决方案七:
帮顶下~~~~
解决方案八:
解决方案九:
引用1楼u013421223的回复:
Randomran=newRandom();intRandKey=ran.Next(0,100);生成一个随机数,0-49不中奖,50-74优惠劵。。。。如果是红包,再生成一个随机数,得到具体多少钱
这个比较简单。如果怕重复可以再加个盘点。
解决方案十:
参见一个描述:一段经典的概率算法,proArr是一个预先设置的数组,假设数组为:array(100,200,300,400),开始是从1,1000这个概率范围内筛选第一个数是否在他的出现概率范围之内,如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间,在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。这样筛选到最终,总会有一个数满足要求。就相当于去一个箱子里摸东西,第一个不是,第二个不是,第三个还不是,那最后一个一定是。这个算法简单,而且效率非常高,关键是这个算法已在我们以前的项目中有应用,尤其是大数据量的项目中效率非常棒。
解决方案十一:
引用2楼z050301402的回复:
Quote: 引用1楼u013421223的回复:
Randomran=newRandom();intRandKey=ran.Next(0,100);生成一个随机数,0-49不中奖,50-74优惠劵。。。。如果是红包,再生成一个随机数,得到具体多少钱这个是有概率的啊不能直接用随机数
数学没学好不怪你
解决方案十二:
高中的时候就算过,抽奖顺序不影响抽奖概率所以你准备6w个抽奖结果,3w个结果无效,1个结果随机90-100.。。以此类推,每次抽奖就从剩余的抽奖结果取一个这个抽奖结果就相当于彩票,被抽走就作废
解决方案十三:
写过抽奖算法!都忘了让我找找
解决方案十四:
引用9楼xuzuning的回复:
参见一个描述:一段经典的概率算法,proArr是一个预先设置的数组,假设数组为:array(100,200,300,400),开始是从1,1000这个概率范围内筛选第一个数是否在他的出现概率范围之内,如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间,在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。这样筛选到最终,总会有一个数满足要求。就相当于去一个箱子里摸东西,第一个不是,第二个不是,第三个还不是,那最后一个一定是。这个算法简单,而且效率非常高,关键是这个算法已在我们以前的项目中有应用,尤其是大数据量的项目中效率非常棒。
原文的描述还有好多,光看这句话实在看不懂啊
解决方案十五:
表示关注一下。。。。
解决方案:
假设90到100的红包6万分之一的红包是1个,那么红包总数是60000:1、90到100的红包6万分之一:12、80到89.99的红包5万分之一:1.23、50到79.99的红包4万分之一:1.54、30到49.99的红包3万分之一:25、20到29.99的红包2万分之一:36、10到19.99的红包1万分之一:67、5到9.99的红包五千分之一:128、3到4.99的红包两千分之一:309、2到2.99到红包五百分之一:12010、1到1.99的红包一百分之一:60011、其余都是0.99以下:....取整放大倍数,由最小公倍数,可以得到红包总数为600000;红包的总数和优惠卷的总数相等。红包数+优惠卷数=不中奖数。那么你只要random(0,红包数+优惠卷数+不中奖数),用得到的随机数去取第N+1个,每次抽一次奖之后,红包数+优惠卷数+不中奖数-1;抽完重置即可。另外奖项的多少到多少是什么奖项的,自己去设置。
解决方案:
这种高中二年级数学题也好意思拿来问?