にしょくきゅうアルゴリズム

2761 ワード

前言
まず、ブロガーは二色球を予測する能力がなく、最近の支付宝や京東などのクライアントにランダム宝くじ(二色球)がある機能を見て、このランダム番号のアルゴリズムをシミュレーションして実現したいと思っています.
前にある人が博主が比較的に楽観的だと言っているのを見て、すべて歯を食いしばって堅持して、博主も各種のキックアスが死んで、各種の幻想、例えば2色のボールの1等賞に当たってBMWを運転してアリに行ってコードを書いて、はは、私はやはりコードを書くのが好きです.(ps:卵が痛くて、論文がまだ終わっていないので、ここで神馬の二色球をしましょう)
二色球ランダムアルゴリズムの考え方
最近私も毎週2色のボールを買って、2期遊んだ後、赤いボールが33選6、青いボールが16選1であることを知っていて、そのため当選する確率は:1/(C(6,33)× C(1, 16)) = 1/17721088 .久しぶりに確率をやったので、こんなに簡単な確率の問題は、計算が間違っていないはずです.
33選6を例にとると、私たちのアルゴリズムは以下のプロセスをシミュレートするだけです.
  • 配列を初期化し、配列内容は[1...33]
  • である.
  • 配列の下付き文字1から33の中からランダムに1つの下付き文字を選択し、例えば7であれば、下付き文字が7と現在の最後のビットの数(すなわち、下付き文字が32)を交換し、下付き文字が7の数を結果配列の
  • に入れる.
  • 配列下標1から32からランダムに1つの数を選択し、その数と最後から2番目の桁数の位置
  • を交換する.
  • ......
  • 6個の数が選択されるまで
  • Rondomクラスについてはjavaが持っているRandomクラスを使えばいいです.種を提供して、クライアントが使っているタイムスタンプを推定します.ここではタイムスタンプも使っています.誕生日の神馬も考えられます.
    二色球ランダムアルゴリズム
    import java.util.ArrayList;
    import java.util.Random;
    
    /**
     *         
     * 
     * @author zhengyi.wzy
     * 
     */
    public class DoubleBall {
        public static void main(String args[]) {
            //     
            ArrayList redBalls = getBalls(1, 33, 6);
    
            //     
            ArrayList buleBalls = getBalls(1, 16, 1);
    
            //     
            System.out.println("          :" + redBalls + ", " + buleBalls);
        }
    
        private static ArrayList getBalls(int min, int max, int size) {
            ArrayList result = new ArrayList();
            ArrayList stores = new ArrayList();
            for (int i = min; i <= max; i++) {
                stores.add(i);
            }
    
            for (int i = 0; i < size; i++) {
                int index = getRandomIndex(stores.size() - i);
                result.add(stores.get(index));
                swapNumbers(stores, index, stores.size() - i - 1);
            }
    
            return result;
        }
    
        private static int getRandomIndex(int max) {
            Random random = new Random(System.currentTimeMillis());
            return random.nextInt(max);
        }
    
        private static void swapNumbers(ArrayList stores, int index, int last) {
            int tmp = stores.get(index);
            stores.set(index, stores.get(last));
            stores.set(last, tmp);
        }
    }
    

    後記
    いくつかのグループのデータを実験して、やはりとても良いのはランダム性を维持することができて、ははは、実は私は论文を书くことができなくて、それから突然2色のボールのランダムなアルゴリズムを书きたいと思って、みんなはふだんやはり自分の坚持して努力して他の人の认可を获得して、2色のボールのこのようなものはある人は1种の低知能指数税だと言って、私は生活の中の小さい调味料とすることができると感じて、彼女と一绪に买って、大赏に当たってからの生活を讨论して、やはりすばらしいです.もちろん、残業を買った後、コードを書いてコードを書き続け、ブロガーは論文を書き続けた.
    ところで、私が今期買った番号はこのアルゴリズムでランダムに計算されました.
              :[22, 17, 23, 4, 12, 20], [9]

    皆さんがこのアルゴリズムで当選したら、私に食事をごちそうするのを忘れないでください.