62,046
社区成员
发帖
与我相关
我的任务
分享
//一等奖个数
int Awards1 = 2;
//二等奖个数
int Awards2 = 5;
//抽奖次数
int count = 1;
//奖品个数
ArrayList awardsCount = new ArrayList() { 2, 5 };
ArrayList list = new ArrayList();
Random r = new Random();
//1000是预估计参与的人数,中奖概率=奖品总个数/1000*抽奖次数
for (int i = 0; i < 1000 * 1 - Awards1 - Awards2; i++)
{
//往数组中添加(1000*1-Awards1-Awards2)个0
list.Add(0);
}
for (int i = 0; i < awardsCount.Count; i++)
{
for (int j = 0; j < Convert.ToInt32(awardsCount[i]); j++)
{
//往数组中根据随机索引添加2(一等奖)个1和5(二等奖)个2
list.Insert(r.Next(0, list.Count), i + 1);
}
}
//测试随机抽奖1000次,如果为1就是一等级,2就是二等奖
for (int k = 0; k <1000; k++)
{
Response.Write(list[r.Next(0, list.Count)]);
}
//一等奖个数
int Awards1 = 2;
//二等奖个数
int Awards2 = 5;
//抽奖次数
int count = 1;
int personNum=1000; //抽奖人数
int []arry=new int[personNum];
for(int i=0;i<personNum;i++)
arry[i]=i;
Random r = new Random();
//先抽二等奖
int n=0;
while(n<Awards2)
{
int k=r.Next(0, personNum);
Console.Write("二等奖是第" +( arry[k] + 1)+ "、 ";
arry[k]=arry[personNum-1];
personNum--;
n++;
}
Console.WriteLine("个人");
//再抽一等奖
n=0;
while(n<Awards1)
{
int k=r.Next(0, personNum);
Console.Write("一等奖是第" +( arry[k] + 1)+ "、 ";
arry[k]=arry[personNum-1];
personNum--;
n++;
}
Console.WriteLine("个人");