Random 为什么我的代码总是给出相同的随机数

Random 为什么我的代码总是给出相同的随机数,random,Random,每当我执行程序时,它总是为sc1和sc2打印9和5。我的理解是,随机类应该是随机的 这是我的密码: public class BlackJack { public static BlackJack blackjack; public int chips; public static int[] deck; public static int ct = 0, sc1, sc2; Random random; public BlackJack()

每当我执行程序时,它总是为sc1和sc2打印9和5。我的理解是,随机类应该是随机的

这是我的密码:

public class BlackJack {

    public static BlackJack blackjack;
    public int chips;
    public static int[] deck;
    public static int ct = 0, sc1, sc2;
    Random random;

    public BlackJack() {
        deck();
        deal();
        System.out.println(sc1);
        System.out.println(sc2);

    }



    public void deck() {
        deck = new int[52];
        for (int i = 0; i < 52; i++) {
            if(i % 4 == 0) {
                ct++;
            }
            deck[i] = ct;
        }

    }



    public void deal() {
        random = new Random(52);
        sc1 = deck[random.nextInt(52)];
        sc2 = deck[random.nextInt(52)];
    }



    public static void main(String[] args) {
        blackjack = new BlackJack();
    }

}
公共类21点{
公共静态21点;
公共int芯片;
公共静甲板;
公共静态int ct=0,sc1,sc2;
随机;
公共21点(){
甲板();
交易();
系统输出打印项次(sc1);
系统输出打印项次(sc2);
}
公共空甲板(){
甲板=新整型[52];
对于(int i=0;i<52;i++){
如果(i%4==0){
ct++;
}
甲板[i]=ct;
}
}
公开无效交易(){
随机=新随机(52);
sc1=甲板[random.nextInt(52)];
sc2=甲板[random.nextInt(52)];
}
公共静态void main(字符串[]args){
21点=新21点();
}
}

提前感谢您的指导。

没关系。我很笨。事实上,我有随机=新随机(52);代替随机=新随机()

没关系。我很笨。事实上,我有随机=新随机(52);代替随机=新随机()

您总是使用52作为
Random
实例的种子,因此在伪随机序列中始终会得到相同的数字。在你的
Random
声明中取出52。不要使用
Random
类。它使用一个内部字典,可以多次为你提供相同的重复数据。你总是用52作为你的
Random
实例的种子,所以你总是会在伪随机序列中得到相同的数字。在你的
Random
声明中取出52。不要使用
Random
类。它使用内部字典,可以多次为你提供相同的重复数据。你可以删除你的问题/答案。你可以删除你的问题/答案