成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微信紅包的隨機算法是怎樣實現的?

移動開發 算法
微信紅包的隨機算法是怎樣實現的?本例中我們摒棄“抽取”、“隨機金額”這樣的傳統概念,使錢擁有選擇意識,執行“隨機”行為,自然而然紅包就有了隨機金額的屬性。改變一下思路,別把簡單問題復雜化。

我在知乎上看到這樣一個問題 微信紅包的隨機算法是怎樣實現的?

[[218949]]

有人說騰訊大致是這樣實現的:

 

  1. public static double getRandomMoney(LeftMoneyPackage _leftMoneyPackage) { 
  2.     // remainSize 剩余的紅包數量 
  3.     // remainMoney 剩余的錢 
  4.     if (_leftMoneyPackage.remainSize == 1) { 
  5.         _leftMoneyPackage.remainSize--; 
  6.         return (double) Math.round(_leftMoneyPackage.remainMoney * 100) / 100; 
  7.     } 
  8.     Random r     = new Random(); 
  9.     double min   = 0.01; // 
  10.     double max   = _leftMoneyPackage.remainMoney / _leftMoneyPackage.remainSize * 2; 
  11.     double money = r.nextDouble() * max; 
  12.     money = money <= min ? 0.01: money; 
  13.     money = Math.floor(money * 100) / 100; 
  14.     _leftMoneyPackage.remainSize--; 
  15.     _leftMoneyPackage.remainMoney -= money; 
  16.     return money; 

也有人做了正太分布、方差分析、回歸分析、統計模擬等,圖太長我就不貼了。

然而

  • 所有答案都是“取時隨機”,即設計“紅包池”的概念,然后在抽取時隨機取數。
  • 所有答案都是“錢的隨機”,即隨機金額,然后return。

下面我們換個思路,現在我們把所有的錢換成1分的 硬幣 ,把紅包想象成 罐子 ,然后 撒幣 。

 

  1. /** 
  2.  * @param count 紅包數 
  3.  * @param money 總金額 
  4.  * @return 
  5.  */ 
  6. public static Integer[] ranRedPac(Integer countInteger money) { 
  7.     Integer[] result = new Integer[count]; 
  8.     for (int i = 1; i <= money; i++) { 
  9.         int n = new Random().nextInt(count); 
  10.         result[n] = result[n] == null ? 1 : result[n] + 1; 
  11.     } 
  12.     return result; 
  13.  
  14. //測試 
  15. public static void main(String[] args) { 
  16.     Arrays.asList(ranRedPac(10, 5000000)).forEach(i -> System.out.println(i)); 
  17.     System.out.println("sum: " + Arrays.asList(ranRedPac(10, 50)).stream().mapToInt(i -> i).sum()); 

每分錢隨機選擇紅包。

至于什么回歸分析,統計模擬 統統用不上 。

本例中我們摒棄“抽取”、“隨機金額”這樣的傳統概念,使錢擁有選擇意識,執行“隨機”行為,自然而然紅包就有了隨機金額的屬性。

改變一下思路,別把簡單問題復雜化。

我們在編碼設計時,通常會考慮現實生活中的邏輯,并把對象抽象成類,行為抽象成方法。但是,我們偶爾也要考慮思維 反轉 。

當然,我的代碼有一定的弊端。

思維是最重要的。

責任編輯:未麗燕 來源: SegmentFault
相關推薦

2015-11-12 09:39:28

微信紅包實現

2020-08-05 12:35:06

微信朋友圏廣告

2020-02-14 14:13:13

架構運維技術

2021-11-16 23:11:24

Java微信搶紅包

2014-06-18 13:12:01

Wi-Fi微信

2015-02-26 13:54:01

微信支付寶紅包

2018-11-12 10:20:29

網絡安全網絡安全技術周刊

2015-04-16 10:35:08

微博微博如何實現

2015-07-15 10:09:43

2018-03-27 10:15:58

微信紅包個人信息

2014-02-04 07:59:27

2022-01-27 07:43:38

微信拜年紅包iOS

2015-08-03 17:21:26

APP

2024-08-19 11:31:41

2021-05-11 15:42:12

數字人民幣支付寶微信

2017-10-10 14:20:11

隨機森林分類算法

2020-07-27 15:06:14

微信張小龍焦慮

2022-01-14 19:00:37

微信微信紅包移動應用

2023-10-30 01:08:35

微信紅包高性能架構

2018-05-23 09:11:42

微信Android開發面試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美视频 | 欧美国产精品一区二区三区 | 国产一区二区三区四区五区3d | www.久久 | 精品国产一区二区三区四区在线 | 亚洲国产精品一区二区www | 美女日批免费视频 | 国产精品色av | 美女在线观看国产 | 97精品超碰一区二区三区 | 国产四虎| 欧美日韩综合 | 欧美精品一区二区三区四区五区 | 不卡在线视频 | 国产精品中文字幕在线 | 四色永久 | a免费在线 | 美女拍拍拍网站 | 人人叉 | 日本三级全黄三级三级三级口周 | 91传媒在线观看 | 亚洲综合在线视频 | 人人草天天草 | 久久久久无码国产精品一区 | 95国产精品 | 2020天天操 | 成人av高清| 成人在线不卡 | 日本又色又爽又黄又高潮 | 精品一区二区三区在线观看国产 | 久久久99国产精品免费 | 国产一区二区在线免费观看 | 亚洲精品在线免费播放 | 日韩欧美在线免费观看 | 国产高清精品一区二区三区 | 97精品国产97久久久久久免费 | 精品久| 国产精品九九九 | 久久男人天堂 | 午夜激情一区 | 中文字幕av在线 |