• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信公众号 > ASP.NET代码轻松实现微信抢红包

ASP.NET代码轻松实现微信抢红包

作者:匿名 字体:[增加 减小] 来源:互联网

匿名通过本文主要向大家介绍了asp.net 微信 红包等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
这篇文章主要为大家相许介绍了轻松实现微信抢红包的ASP.NET代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

群里都在玩抢红包,抢了再发,发了再抢,简直是无聊,程序员感兴趣是的如何实现,这里简单说说实现思路,附上dome,代码有点low,好在是实现了,具体内容如下

正文

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.数据均匀,这里以 1<n<(剩余金额/剩余红包数)*2,这里防止一个红包抢走大量的钱,这里需要写个递归,去检查数据值是否过大,50元发13个红包的第3图,就是因为没有检查数据,导致钱不平均,这个可以根据自己的玩法去设置.
3.余数处理,当数据平均给20个红包,肯定跟总金额有所偏差,这时候我们就要多退少补,如果大于总金额,让红包金额多的去减少(总金额/总人数),如果还有剩余,就让第二多的去减少,直到补完这个空缺为止,反之亦然.
4.打乱顺序,细心的园友可能发现,红包是有顺序规律的,我们必须简单的写个function去打乱它.  

demo

/// <summary>
 /// 抢红包
 /// </summary>
 /// <param name="money"></param>
 /// <param name="num"></param>
 /// <returns></returns>
 public List<int> qhb(int money, int num)
 {
  int min = 1;
  int pjs = money / num;
  List<int> list = new List<int>();
  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;
 }
/// <summary>
 /// 余数处理
 /// </summary>
 /// <param name="money"></param>
 /// <param name="list"></param>
 /// <returns></returns>
 public List<int> checklist(int money, int pjs, List<int> list)
 {
  if (money != 0)
  {
  if (money > 0)
  {

   List<int> 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<int> 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;
 }
 /// <summary>
  /// 冒泡排序
  /// </summary>
  /// <param name="list"></param>
  /// <param name="order"></param>
  /// <returns></returns>
  public List<int> maopao(List<int> 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;
 }
/// <summary>
 /// 打乱顺序
  /// </summary>
  /// <param name="list"></param>
  /// <returns></returns>
 public List<int> suiji(List<int> 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代码轻松实现微信抢红包的详细内容,更多请关注其它相关文章!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 微信支付开发-Senparc.Weixin.MP详解
  • 微信公众号开发客服接口实例代码
  • 微信公众平台开发 多客服
  • 推荐10款tan源码(收藏)
  • java微信开发之上传下载多媒体文件
  • asp.net微信开发(高级群发文本)
  • 微信公众平台开发消息回复总结介绍
  • 微信开发之获取access_token
  • 微信开发入门(十一)更新上一页数据
  • 微信开发-有关微信授权问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 图文详解微信公众平台发布图文消息步骤
    • Java微信开发之自定义菜单的创建
    • 做一个移动端微信公众号(附代码)
    • 微信协议详解
    • delphi 实现微信开发
    • 关于微信小程序提交审核标准和下架标准的介绍
    • 微信公众号-获取用户信息(网页授权获取)实现步骤
    • 微信开发的扫码登录处理的步骤详解
    • 微信开发之slider详解及实例代码
    • 微信支付接口开发实例总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有