隨機生成8位房間號

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

/**
 * 生成8位數字
 */
class NumUtil {
    private Set<Integer> s = new HashSet<>();
    private Random r = new Random();
    private int maxNum = 99999999;

    // 隨機生成一個8位數字
    public int genNum() {
        // 號碼用完
        if (s.size() >= 89999999) {
            return -1;
        }

        // 隨機生成8位數字
        int n = r.nextInt(89999999) + 10000000;
        while (!s.add(n)) {
            n++;

            if (n > maxNum) {
                n = 0;
            }
        }
        return n;
    }

    // 回收一個數字
    public void reUse(int num) {
        s.remove(num);
    }
}


public class GenNum {
    public static void main(String[] args) {
        NumUtil nu = new NumUtil();

        for (int i = 0; i < 10000; i++) {
            System.out.println(nu.genNum());
            System.out.println(nu.genNum());
            System.out.println(nu.genNum());
            System.out.println(nu.genNum());
            System.out.println(nu.genNum());
            System.out.println(nu.genNum());
        }
    }
}

/**
 * 41848573
 * 21749017
 * 94770119
 * 75347140
 * 78686040
 * 42131227
 * 37761954
 * 85777761
 * 57112821
 * 48389302
 * 65598040
 * 23838516
 * 28090720
 * 88906228
 * 44502345
 * 32238420
 * 92439565
 * 59791578
 * 80649782
 * 94253958
 * 76809026
 * 80149029
 * 61790786
 * 81350427
 * 20955149
 * 94600880
 * 30485918
 * 41688464
 * 72885183
 * 81103876
 * 95393709
 * 26674014
 * 59581110
 * 52225617
 * 87036741
 * 18540796
 * 98091653
 * 65840680
 * 47285154
 * 84689515
 * 45256034
 * 57825102
 * 74151129
 * 98586743
 * 61136872
 * 17699177
 * 78681737
 * 66091322
 * 59826283
 * 82279706
 * 20001550
 * ...
 */

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章