10000个人随机找100个出来中奖
Enumerable.Range(1,10000).OrderBy(x=>Guid.NewGuid()).Take(100).ToList().ForEach(x=>
Console.Write(x+"\t"));
Enumerable.Range(1,10000).OrderBy(x=>Guid.NewGuid()).Take(100).ToList().ForEach(x=>
Console.Write(x+"\t"));
1.总的抽奖人数
2.中奖概率(求出:中奖人数总的抽奖人数*中奖概率)二、抽奖流程:
申请一个中奖人的ID集合(set),初始化为空,
for(int i=0;i<中奖人数;i++)
{
随机产生[1-总人数之间]之间的一个整数R,作为预中奖号码;
遍历中奖集合ID(set集合),判断R是否已存在
while(R in set)
{
重新随机产生一个整数R;
再判断;
}
把R加入set;
}
输出set集合,即为中奖人数ID。
每来一个人抽奖,就随机生成一个数字,遍历集合,如果都不在集合内,就是没中奖。
如果那个数字在集合内,就中奖。然后从集合中移除那个数字。
集合为空则停止抽奖。中奖概率可以由随机生成数字的范围和n控制。
中奖概率=n/随机数字区间长度