成人免费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

架構運維技術

2014-06-18 13:12:01

Wi-Fi微信

2021-11-16 23:11:24

Java微信搶紅包

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

微信微信紅包移動應用

2018-05-23 09:11:42

微信Android開發面試

2023-10-30 01:08:35

微信紅包高性能架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区观看| 日韩一区不卡 | 一本色道久久综合亚洲精品高清 | 精品不卡| 精品一区二区久久久久久久网站 | 黄色免费av | 国产精品极品美女在线观看免费 | 日本网站在线看 | 国产在线一区二 | 久久丝袜| 亚洲欧美v | 久久精品亚洲成在人线av网址 | com.色.www在线观看 | 欧美午夜精品 | 欧美视频在线观看 | 中文字幕一区二区三区四区五区 | 91精品久久 | 福利视频一区二区 | 欧美日韩不卡合集视频 | 欧美国产精品 | 久久精品视频免费观看 | 久久精品久久久久久 | 97avcc | 精品电影 | 黄色毛片免费看 | 三级在线视频 | 五月槐花香 | 99久久久久久 | 欧美2区| 国产高清视频在线 | 国产福利91精品一区二区三区 | 不卡av电影在线播放 | 国产色99 | 免费一级毛片 | 高清亚洲 | 日韩在线国产精品 | 久久久不卡网国产精品一区 | 99久久婷婷国产综合精品首页 | 国产精品久久久久久福利一牛影视 | 日本不卡免费新一二三区 | 亚洲乱码一区二区三区在线观看 |