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

ブログ    
ブログ    
ブログ    

推薦する

スマートパッケージング:製造業の最新トレンド

[[352971]]画像ソース: https://pixabay.com/images/id-151...

JavaScript: ソートアルゴリズムとコード実装のトップ 10

この記事の内容には、(双方向) バブル ソート、選択ソート、挿入ソート、クイック ソート (穴埋めと...

安定的な動画拡散をリリースしました! 3D合成機能が注目を集める、ネットユーザー「進歩が速すぎる」

安定拡散当局はついにこのビデオに対して行動を起こした――生成ビデオモデルStable Video D...

OpenAI CLIPモデルポケット版、24MBでテキスト画像マッチングを実現、iPhoneでも実行可能

OpenAI の CLIP モデルは、画像とテキスト カテゴリのマッチングに非常に優れていますが、元...

...

Googleの人工知能部門DeepMindが想像力を駆使した新システムを開発

北京時間8月19日のreadwriteによると、2014年にGoogleに買収された英国の人工知能企...

数量を増やして価格を下げます! OpenAIが史上最強のChatGPTをリリース。誰でもGPTをカスタマイズ可能。GPTストアは今月開始予定

まもなく、すべての GPT コレクションが GPT ストアを通じてアクセスできるようになります。はい...

ファーウェイがAI戦略とフルスタックの全シナリオAIソリューションを発表

[中国、上海、2018年10月10日] 第3回HUAWEI CONNECT 2018(ファーウェイ・...

...

seq2seq モデルよりも 90 倍高速です。 Google、新しいテキスト編集モデルFELIXを発表

[[397649]]シーケンスツーシーケンス (seq2seq) モデルは、自然言語生成タスクに対す...

...

AI支援農業建築:農業生産効率の向上

科学技術の急速な発展に伴い、人工知能(AI)はさまざまな分野にますます統合されつつあり、農業分野も例...

アルゴリズムが消費者を「計算」するのを防ぐにはどうすればよいでしょうか?専門家:対策のためのアルゴリズムの研究は可能

デジタル経済の時代では、目に見えず、実体のないアルゴリズムが常に消費者の選択に影響を与えます。近年、...

2020年のスマートセキュリティ技術の開発動向

インテリジェントセキュリティ技術とは、画像の取得、伝送、保存、ビデオ分析、ビッグデータ処理のほか、マ...