c# 求一个中奖算法

发布网友 发布时间:2024-10-23 20:33

我来回答

4个回答

热心网友 时间:2024-11-12 00:54

List<int> roles=new List<int>(); //用来保存中奖名单
Random ran=new Random(); //随机数
do{
    int role=ran.nextInt(1,51); //随机获取 1-50的随机数
    if(!roles.Contians(role)) //如果这个人没有中奖过
    {
         roles.Add(role); //添加到中奖列表 
     }    
}while(roles.count<5);  //当中奖列表不到5个人就继续循环

热心网友 时间:2024-11-12 00:51

可以使用随机数!产生一个1—10的随机数,然后比对判断,获得三等奖,产生一个1—100的随机数,比对判断,true得二等奖,产生一个1—1000的随机数~~以此类推,忘采纳

热心网友 时间:2024-11-12 00:49

假定人员编号是0-49,简单点的比如从从0循环到49,将当前位置的数字与0-49之间的一个随机位置数字互相交换。循环完后人员就是随机排列的,从最前面依次取5个就行了。

热心网友 时间:2024-11-12 00:53

int 中奖人数 = 5;
int 参与人数 = 50; 
if(中奖人数 > 参与人数)throw new Exception("本程序假定一个人不能中奖两次!");
    
int[] 中奖人编号 = new int[中奖人数];
var rnd = new Random((int)DateTime.Tick); 
for(int n = 0; n < 中奖人编号.Length; n++){
  bool 计算出了中奖编号 = false; 
  while(计算出了中奖编号 == false){ 
    中奖人编号[n] = rnd.Next(1, 参与人数);
    计算出了中奖编号 = true; 
    for(int m = n; m > 0; m--){
      if(中奖人编号[m-1] == 中奖人编号[n]){
        计算出了中奖编号 = false;
        break;  
      } 
    }  
  } 
}

 

liuxilink|四级 已是正解,不用管我的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com