国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

微信搶紅包ASP.NET代碼輕松實現

2024-07-10 12:46:44
字體:
來源:轉載
供稿:網友

群里都在玩搶紅包,搶了再發,發了再搶,簡直是無聊,程序員感興趣是的如何實現,這里簡單說說實現思路,附上dome,代碼有點low,好在是實現了,具體內容如下 

正文

100塊發30個紅包

  

50塊發13個紅包

  

1塊發10個紅包

  

發紅包需要滿足以下幾個條件

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; }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙井市| 民权县| 白水县| 遂宁市| 新闻| 平乡县| 乡宁县| 抚松县| 嘉义县| 台州市| 邯郸县| 游戏| 西林县| 子洲县| 万荣县| 本溪| 普宁市| 金溪县| 阜宁县| 炉霍县| 蒲城县| 台州市| 五华县| 邯郸县| 二连浩特市| 宜春市| 波密县| 垦利县| 泸水县| 通州区| 托克逊县| 蒲城县| 芦山县| 航空| 津市市| 庐江县| 盐源县| 乡城县| 宁陕县| 奉新县| 汾阳市|