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

ブログ    
ブログ    
ブログ    

推薦する

人工知能が企業コミュニケーションに及ぼす10の影響

職場にソフトウェア ロボットや人工知能 (AI) が導入されると考えると、一部の労働者は不安を感じる...

最近人気の大型モデルや自動運転コンセプトについてお話ししましょう。

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

困難な選択のターミネーター: さまざまな問題に対する機械学習アルゴリズム

データサイエンスを学び始めた頃、特定の問題に対してどのアルゴリズムを選択すればよいのかという疑問によ...

...

「インターネット情報サービスアルゴリズム推奨管理規則」が公布され、3月1日に発効される。

最近、中国サイバースペース管理局、工業情報化部、公安部、国家市場監督管理総局は共同で「インターネット...

ディープラーニングのためのヘテロジニアス アクセラレーション テクノロジー (パート 2): カタツムリの殻の中に道場を構築する

1. 概要記事「ディープラーニング向けヘテロジニアスアクセラレーションテクノロジー(パート1)」で説...

機械学習においてデータ品質はどの程度重要ですか?

今日、機械学習は組織の複数の事業部門にわたって重要な機能になりつつあります。機械学習プログラムはデー...

世界を支配するトップ 10 のアルゴリズムをご存知ですか?

Reddit に、私たちの現代生活におけるアルゴリズムの重要性と、どのアルゴリズムが現代文明に最も...

Llama 2 第 2 波のハイライト: 慎重すぎるため、コード生成には改善の余地が大いにある

有用か無害かLlama-2-chat は、セキュリティ フィルターに関して過度に敏感な動作を示すこと...

Quark App、健康検索をアップグレードし、健康モデルアプリ「Quark Health Assistant」をリリース

12月25日、Quark Appは健康検索の全面的なアップグレードを発表し、健康大規模モデルアプリケ...

コードスイッチングに7億5000万ドル? Facebook TransCoder AI は 1 つで十分です。

コードの移行と言語の変換は困難で費用のかかる作業です。オーストラリア連邦銀行は、プラットフォームを ...

何をするにしても使い始めるべき 7 つの超便利な AI ツール

正直なところ、テクノロジーの未来は人工知能 (AI) の進歩と密接に結びついています。 OpenAI...

人工知能は「絶滅危惧」言語の保護に大きな役割を果たすかもしれません!

国連の統計によると、私たちが住む地球上には西暦8世紀以降、2万以上の人間の言語が出現しましたが、今日...

スマートセンサー: 従業員をオフィスに戻すための鍵となるか?

新型コロナウイルス感染症のパンデミックにより、多くの人々の働き方が変化しました。現在、多くの企業は、...