WeChat の赤い封筒のランダム アルゴリズムはどのように実装されていますか?

WeChat の赤い封筒のランダム アルゴリズムはどのように実装されていますか?

Zhihu で質問を見ました: WeChat の赤い封筒のランダム アルゴリズムはどのように実装されていますか?

[[218949]]

テンセントはこれを大まかに次のように達成したと言う人もいます。

  1. パブリック静的ダブルgetRandomMoney(LeftMoneyPackage _leftMoneyPackage) {
  2. // remainSize 残りの赤いパケットの数
  3. //remainMoney 残金
  4. _leftMoneyPackage.remainSize == 1の場合{
  5. _leftMoneyPackage.remainSize--;
  6. 戻り値(double) Math.round(_leftMoneyPackage.remainMoney * 100) / 100;
  7. }
  8. ランダム r = new Random();
  9. ダブル最小値 = 0.01; //
  10. ダブル最大値 = _leftMoneyPackage.remainMoney / _leftMoneyPackage.remainSize * 2;
  11. ダブルマネー = r.nextDouble() * max;
  12. お金 = お金 <= 最小 ? 0.01: お金;
  13. お金 = Math.floor(お金 * 100) / 100;
  14. _leftMoneyPackage.remainSize--;
  15. _leftMoneyPackage.remainMoney -= お金;
  16. お金を返す;
  17. }

正規分布や分散分析、回帰分析、統計シミュレーションなどもやっている人がいますが、画像が長すぎるので載せません。

しかし

  • すべての答えは「取られるときにランダム」、つまり「赤い封筒のプール」を設計し、それから抽選時に数字をランダムに取るというコンセプトです。
  • すべての回答は「ランダムな金額」、つまりランダムな金額で返されます。

考え方を変えてみましょう。今度は、すべてのお金を 1 セント硬貨に替え、赤い封筒を瓶として想像し、硬貨を散らします。

  1. /**
  2. * @param count赤いパケットの数
  3. * @param お金の合計金額
  4. * @戻る 
  5. */
  6. 公共 静的 整数[]ranRedPac(整数 カウント整数金額){
  7. Integer [] 結果 = 新しいInteger [];
  8. ( int i = 1; i <= お金; i++) {
  9. int n = new Random().nextInt( count );
  10. 結果[n] = 結果[n] == null ? 1 : 結果[n] + 1;
  11. }
  12. 結果を返します
  13. }
  14.  
  15. //テスト
  16. 公共 静的void main(String[] args) {
  17. Arrays.asList(ranRedPac(10, 5000000)).forEach(i -> System.out.println (i));
  18. システム.out .println( "合計: " + Arrays.asList(ranRedPac(10, 50)).stream().mapToInt(i -> i) .sum ());
  19. }

1 ペニーごとに赤い封筒がランダムに選択されます。

回帰分析や統計シミュレーションに関しては、まったく役に立ちません。

この例では、「抽選」や「ランダムな金額」などの従来の概念を放棄し、お金に選択の感覚を持たせ、「ランダム」な動作を実行させます。当然、赤い封筒にはランダムな金額という属性があります。

考え方を変えて、単純な問題を複雑にしないでください。

コードを設計するときは通常、現実世界のロジックを考慮し、オブジェクトをクラスに、動作をメソッドに抽象化します。しかし、時には考え方を逆転させることも検討すべきです。

もちろん、私のコードにはいくつかの欠点があります。

考えることが最も大切なことです。

<<:  人工知能は怖いものではありません。怖いのは、使い方がわからず淘汰されてしまうことです。

>>:  face_recognitionに基づく顔認識の実装

ブログ    
ブログ    
ブログ    

推薦する

...

ルーティングの基本アルゴリズム設計の目標とタイプ

基本的なルーティング アルゴリズムの設計目標とタイプは、基本的なルーティング アルゴリズムに関する知...

...

業界初のAIリアルタイムステルス技術、ステルスの超能力を手に入れるために快手へ

先ほど終わった快手千夜一夜パーティで、ディルラバ・ディルムラトの突然の登場に、司会者と観客から「かっ...

ロボットにとっては、這う方が移動には良い方法かもしれない

世界中の科学者の中には、ロボットの歩行能力を強化するために取り組んでいる者もいれば、異なる視点からロ...

世界的なAI人材不足により、各国間の協力とトレーニングが増加

文/張燕現在、世界で人工知能教育が発達している国や地域では、人工知能人材の育成を徐々に国のトップレベ...

サイバーセキュリティの専門家が知っておくべきAI用語

人工知能の急速な発展により、私たちは第四次産業革命の真っ只中にいます。このデジタル時代において、サイ...

NeRF を放棄し始めていますか?ガウススプラッティングが自動運転のシナリオで人気があるのはなぜですか?

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

Baidu WorldがAI応用レポートカードを発表、国民経済の3大産業に進出

11月1日、2018年百度世界大会が北京で開催されました。「YES AI DO」をテーマにしたこの大...

人工知能を使用して自動化されたデータセンターを構築する方法

現在、人工知能 (AI) に関する議論のほとんどは、自動運転車、チャットボット、デジタル ツイン、ロ...

ネットワーク攻撃と防御における人工知能の応用と問題分析

サイバー攻撃と防御の対決は絶えず進化とアップグレードを続けています。人工知能は自己学習と適応能力を備...

ビッグデータと機械学習を駆使して12星座の素顔を明らかにする!

[[201919]] 「なぜ論文が出版されないのでしょうか?私は研究に向いていないのでしょうか?」...

ビッグデータに圧倒された米国の諜報機関は人工知能に期待をかけている

[[205975]]膨大な量のデータを精査する必要があるため、米国の諜報機関は人工知能に期待をかけて...

...

GPT の成熟への道に関する公式メモ | OpenAI Developer Day

OpenAI は ChatGPT 製品の作成の詳細を明らかにしました。そして、この共有の波は、次の...