这篇文章主要为大家相许介绍了轻松实现微信抢红包的ASP.NET代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
群里都在玩抢红包,抢了再发,发了再抢,简直是无聊,程序员感兴趣是的如何实现,这里简单说说实现思路,附上dome,代码有点low,好在是实现了,具体内容如下
正文
100块发30个红包




50块发13个红包





1块发10个红包





发红包需要满足以下几个条件
1.总金额不变
2.每个红包都必须有钱
3.尽量的均匀点,不然抢红包没什么意思了
实现思路1.首先要确定最小单位,这里是精确到分,我这里以int类型进行计算,得出的结果也全是int类型
2.数据均匀,这里以 1
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; } Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Comment utiliser Swagger
Quel logiciel est Autocad ?
Comment commencer à acheter des crypto-monnaies
Comment pycharm exécute les fichiers python
Comment supprimer la dernière page vierge dans Word
Comment résoudre une erreur dans le script de la page actuelle
Comment utiliser la fonction de conversion convertir
Construire un serveur Internet