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に基づく顔認識の実装

ブログ    
ブログ    

推薦する

...

中国チームがボストン・ダイナミクスに対抗する四足歩行ロボットを発表

本日、Yushu Technology は、中国で正式に一般に公開される初の四足歩行ロボットとなる四...

ハッシュテーブルアルゴリズムの最初から最後までの徹底的な分析

注: この記事は 3 つの部分に分かれています。最初の部分は、Baidu の面接の質問における To...

...

ロボットによるモノのインターネットは製造業の未来となるのでしょうか?

ロボットによるモノのインターネットは、産業用ロボットと IoT センサーという 2 つの貴重なテクノ...

AIが生成した小説が静かに人気を集めている。人間ならではの創造性がAIにコピーされてしまったのだろうか?

[[408920]]編集部注:人工知能(AI)の発達により、人々は徐々に未来についてより多様な想像...

...

清華大学人工知能開発報告:中国は過去10年間のAI特許出願で世界第1位

ザ・ペーパー記者 張偉最新の報告書によると、中国の人工知能特許出願件数は過去10年間で世界第1位であ...

...

企業の4分の1以上が従業員による生成AIの使用を禁止している

シスコの 2024 年データ プライバシー ベンチマーク調査によると、プライバシーとデータ セキュリ...

300 万行から 100 行へ: 機械学習により開発エクスペリエンスが向上

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

クロスモーダルトランスフォーマー: 高速かつ堅牢な 3D オブジェクト検出に向けて

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

機械学習と人工知能の未来について語る

[[258702]] [51CTO.com クイック翻訳] 機械学習 (ML) と人工知能 (AI)...

...

...