欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信搶紅包ASP.NET代碼輕松實(shí)現(xiàn)

 更新時(shí)間:2016年08月19日 16:28:19   作者:提伯斯  
這篇文章主要為大家相許介紹了輕松實(shí)現(xiàn)微信搶紅包的ASP.NET代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

群里都在玩搶紅包,搶了再發(fā),發(fā)了再搶,簡直是無聊,程序員感興趣是的如何實(shí)現(xiàn),這里簡單說說實(shí)現(xiàn)思路,附上dome,代碼有點(diǎn)low,好在是實(shí)現(xiàn)了,具體內(nèi)容如下 

正文

100塊發(fā)30個(gè)紅包

  

50塊發(fā)13個(gè)紅包

  

1塊發(fā)10個(gè)紅包

  

發(fā)紅包需要滿足以下幾個(gè)條件

1.總金額不變
2.每個(gè)紅包都必須有錢
3.盡量的均勻點(diǎn),不然搶紅包沒什么意思了 

實(shí)現(xiàn)思路
1.首先要確定最小單位,這里是精確到分,我這里以int類型進(jìn)行計(jì)算,得出的結(jié)果也全是int類型
2.數(shù)據(jù)均勻,這里以  1<n<(剩余金額/剩余紅包數(shù))*2,這里防止一個(gè)紅包搶走大量的錢,這里需要寫個(gè)遞歸,去檢查數(shù)據(jù)值是否過大,50元發(fā)13個(gè)紅包的第3圖,就是因?yàn)闆]有檢查數(shù)據(jù),導(dǎo)致錢不平均,這個(gè)可以根據(jù)自己的玩法去設(shè)置.
3.余數(shù)處理,當(dāng)數(shù)據(jù)平均給20個(gè)紅包,肯定跟總金額有所偏差,這時(shí)候我們就要多退少補(bǔ),如果大于總金額,讓紅包金額多的去減少(總金額/總?cè)藬?shù)),如果還有剩余,就讓第二多的去減少,直到補(bǔ)完這個(gè)空缺為止,反之亦然.
4.打亂順序,細(xì)心的園友可能發(fā)現(xiàn),紅包是有順序規(guī)律的,我們必須簡單的寫個(gè)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;
  }
  //前面數(shù)據(jù)都是合理的,結(jié)尾必須多退少補(bǔ)
  list = checklist(money, pjs, list);
  return list;
 }
/// <summary>
 /// 余數(shù)處理
 /// </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微信開發(fā)教程匯總》,歡迎大家學(xué)習(xí)閱讀。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • IIS中ASP.NET連接SQL Server出錯(cuò)的解決方法

    IIS中ASP.NET連接SQL Server出錯(cuò)的解決方法

    在IIS中運(yùn)行的ASP.NET應(yīng)用程序其所屬用戶名為ASPNET的特定用戶,其默認(rèn)權(quán)限是無法訪問SQL Server的,更不可能訪問ASP.NET應(yīng)用程序的數(shù)據(jù)庫了,因此要在IIS中訪問SQL Server就需要給ASPNET帳戶賦予相應(yīng)的權(quán)限.
    2010-03-03
  • 詳解ASP.NET-----Repeater數(shù)據(jù)控件的用法總結(jié)

    詳解ASP.NET-----Repeater數(shù)據(jù)控件的用法總結(jié)

    本篇文章主要介紹了ASP.NET--Repeater數(shù)據(jù)控件的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。
    2016-11-11
  • ASP.NET泛型三之使用協(xié)變和逆變實(shí)現(xiàn)類型轉(zhuǎn)換

    ASP.NET泛型三之使用協(xié)變和逆變實(shí)現(xiàn)類型轉(zhuǎn)換

    這篇文章介紹了ASP.NET使用協(xié)變和逆變實(shí)現(xiàn)泛型類型轉(zhuǎn)換的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 用WebClient.UploadData方法上載文件數(shù)據(jù)的方法

    用WebClient.UploadData方法上載文件數(shù)據(jù)的方法

    用WebClient.UploadData方法上載文件數(shù)據(jù)的方法...
    2007-04-04
  • .NET生成水印更好的方法實(shí)例代碼

    .NET生成水印更好的方法實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于.NET中生成水印更好的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.NET具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • ASP.NET?Core在WebApi項(xiàng)目中使用Cookie

    ASP.NET?Core在WebApi項(xiàng)目中使用Cookie

    這篇文章介紹了ASP.NET?Core在WebApi項(xiàng)目中使用Cookie的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 一個(gè)簡單的ASP.NET Forms 身份認(rèn)證的實(shí)例方法

    一個(gè)簡單的ASP.NET Forms 身份認(rèn)證的實(shí)例方法

    當(dāng)訪問默認(rèn)首頁default.aspx時(shí),會(huì)自動(dòng)跳轉(zhuǎn)到login.aspx頁面上請(qǐng)求登錄,隨便輸入用戶名和密碼,點(diǎn)擊“登錄”按鈕,會(huì)回到首頁,并顯示當(dāng)前登錄的用戶名。
    2013-07-07
  • .NET事件監(jiān)聽機(jī)制的局限與擴(kuò)展分析

    .NET事件監(jiān)聽機(jī)制的局限與擴(kuò)展分析

    這篇文章主要介紹了.NET事件監(jiān)聽機(jī)制的局限與擴(kuò)展,詳細(xì)分析了.NET事件監(jiān)聽機(jī)制的機(jī)制與優(yōu)劣,有助于更好的理解.NET的運(yùn)行原理,需要的朋友可以參考下
    2014-11-11
  • ASP.NET 中文顯示之兩種解決方法

    ASP.NET 中文顯示之兩種解決方法

    作者剛開始寫ASP+程序時(shí)候碰到的第一個(gè)比較大的問題就是中文顯示問題,運(yùn)行后發(fā)現(xiàn)ASP+從數(shù)據(jù)庫中讀出來的中文全部變成了?????,有點(diǎn)類似jsp中的這個(gè)頻率出現(xiàn)最高的中文顯示問題了,查了資料發(fā)現(xiàn)有種方法可以輕松解決中文問題。
    2008-05-05
  • ASP.NET頁面優(yōu)化 性能提升8倍的方法

    ASP.NET頁面優(yōu)化 性能提升8倍的方法

    今天與大家分享:一種優(yōu)化頁面執(zhí)行速度的方法。采用這個(gè)方法,可以使用頁面的執(zhí)行速度獲得【8倍】的提升效果
    2012-03-03

最新評(píng)論