成都创新互联网站制作重庆分公司

ASP.NET代码如何实现微信抢红包-创新互联

这篇文章主要介绍了ASP.NET代码如何实现微信抢红包,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

成都创新互联自2013年创立以来,先为磐石等服务建站,磐石等地企业,进行企业商务咨询服务。为磐石企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

具体内容如下


正文

100块发30个红包

ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包

50块发13个红包

ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包

1块发10个红包

ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包ASP.NET代码如何实现微信抢红包

发红包需要满足以下几个条件

1.总金额不变
2.每个红包都必须有钱
3.尽量的均匀点,不然抢红包没什么意思了

实现思路1.首先要确定最小单位,这里是精确到分,我这里以int类型进行计算,得出的结果也全是int类型
2.数据均匀,这里以  13.余数处理,当数据平均给20个红包,肯定跟总金额有所偏差,这时候我们就要多退少补,如果大于总金额,让红包金额多的去减少(总金额/总人数),如果还有剩余,就让第二多的去减少,直到补完这个空缺为止,反之亦然.
4.打乱顺序,细心的园友可能发现,红包是有顺序规律的,我们必须简单的写个function去打乱它.  

demo

/// 
 /// 抢红包
 /// 
 /// 
 /// 
 /// 
 public List qhb(int money, int num)
 {
  int min = 1;
  int pjs = money / num;
  List list = new List();
  Random rnd = new Random();
  for (int i = 0; i < num; i++)
  {
  int max = (money / (num - i)) * 2;
  int s = rnd.Next(min, max);
  s = checkmoney(s, min, max);
  list.Add(s);
  money -= s;
  }
  //前面数据都是合理的,结尾必须多退少补
  list = checklist(money, pjs, list);
  return list;
 }
/// 
 /// 余数处理
 /// 
 /// 
 /// 
 /// 
 public List checklist(int money, int pjs, List list)
 {
  if (money != 0)
  {
  if (money > 0)
  {

   List list_order = maopao(list);
   //给最小
   if (money / pjs == 0)
   {   
   list_order[0] += money;
   }
   else
   {
   for (int i = 0; i < money / pjs + 1; i++)
   {
    if (i == money / pjs)
    {
    list_order[i] += (money - (money / pjs) * pjs);
    }
    else
    {
    list_order[i] += pjs;
    }

   }
   }
   return list_order;
  }
  else
  {

   List list_order = maopao(list,"desc");
   //给较大
   if (money / pjs == 0)
   {

   list_order[0] += money;
   }
   else
   {
   for (int i = 0; i < -(money / pjs) + 1; i++)
   {
    if (i == -(money / pjs))
    {
    list_order[i] += (money - (money / pjs) * pjs);
    }
    else
    {
    list_order[i] -= pjs;
    }

   }
   }
   return list_order;
  }
  }
  return list;
 }
 /// 
  /// 冒泡排序
  /// 
  /// 
  /// 
  /// 
  public List maopao(List list,string order = "asc")
  {
  if (order != "asc")
  {
   for (int i = 0; i < list.Count; i++)
   {
   for (int j = 0; j < list.Count - i - 1; j++)
   {
    if (list[j + 1] > list[j])
   {
    int temp = list[j];
    list[j] = list[j + 1];
    list[j + 1] = temp;
 
    }
   }
   }
  }
  else 
  {
   for (int i = 0; i < list.Count; i++)
   {
   for (int j = 0; j < list.Count-i-1;j++)
   {
    if (list[j+1] < list[j])
    {
    int temp = list[j];
    list[j] = list[j+1];
    list[j+1] = temp;

   }
   }
  }
  }
  return list;
 }
/// 
 /// 打乱顺序
  /// 
  /// 
  /// 
 public List suiji(List list) 
  {
  Random rnd = new Random();
  for (int i = 0; i < list.Count; i++)
  {
   int temp = list[i];
   int j = rnd.Next(0, list.Count-1);
   list[i] = list[j];
   list[j] = temp;
  }
  return list;
 }

感谢你能够认真阅读完这篇文章,希望小编分享的“ASP.NET代码如何实现微信抢红包”这篇文章对大家有帮助,同时也希望大家多多支持创新互联网站建设公司,,关注创新互联行业资讯频道,更多相关知识等着你来学习!


分享名称:ASP.NET代码如何实现微信抢红包-创新互联
网站URL:http://cxhlcq.cn/article/hjood.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部