Java:调用Math.random()的次数会影响结果吗

Java:调用Math.random()的次数会影响结果吗,java,Java,我必须做家庭作业来创建一个宾果游戏,所以我创建了一个方法,返回一个int数组,每个宾果卡有25个随机数,游戏中有75个随机数,(这些卡必须是5x5个2d数组,填充1-75的随机数,游戏中我需要能够以随机顺序从1-75调用)我发现有两个玩家,第一个玩家至少在我测试的时候赢了80%,尽管我预计有时候会接近50-50, 这是我的方法: public int[] pickAllNumbers(){ boolean[] picks = new boolean[LARGEST_NUM + 1];

我必须做家庭作业来创建一个宾果游戏,所以我创建了一个方法,返回一个int数组,每个宾果卡有25个随机数,游戏中有75个随机数,(这些卡必须是5x5个2d数组,填充1-75的随机数,游戏中我需要能够以随机顺序从1-75调用)我发现有两个玩家,第一个玩家至少在我测试的时候赢了80%,尽管我预计有时候会接近50-50, 这是我的方法:

 public int[] pickAllNumbers(){
    boolean[] picks = new boolean[LARGEST_NUM + 1];
    int numbersLength;
    int[] numbers;
    if (this instanceof Card) {
        numbersLength = BOARD_SIZE * BOARD_SIZE;
    } else {
        numbersLength = LARGEST_NUM;
    }
    numbers = new int[numbersLength];
    int i = 0;
    while(i < numbersLength){
        int pick = (int)(Math.random() * LARGEST_NUM) +1;
        if(!picks[pick]){
            picks[pick] = true;
            numbers[i] = pick;
            i++;
        }
    }
    return numbers;
}
public int[]pickAllNumbers(){
boolean[]picks=新的boolean[maximum_NUM+1];
整数长度;
int[]数字;
如果(此实例为卡){
numbersLength=线路板尺寸*线路板尺寸;
}否则{
numbersLength=最大值;
}
数字=新整数[数字长度];
int i=0;
while(i
最大_数为75,板大小为5;
当我从我的卡类调用它时,我使用它来填充卡的2d数组,当我在我的主类中调用它时,我使用它来创建一个75长度的数组来调用游戏中的每个数字

您没有指定您运行此测试的次数,但随着时间的推移和大量(数百万)迭代,它将平衡到50/50或足够接近。我假设您还没有运行过这么多测试,在少量的迭代中,它不会平衡到50/50,因为这不是随机性的工作方式。

谢谢!我明白当你有25个随机数*2在1-75范围内时,那么一个75个随机数的列表应该匹配相同数量的次数,统计上比数百万次迭代快,@YehudaB这或多或少是一个粗略的估计,但是yesAside:没有必要用
false
填充
picks
。它马上就超出了范围,所以你还是放弃它。@Andy Turner我会编辑,我认为这会影响结果……我在代码中没有看到与你的问题相关的问题,所以它可能在其他地方,或者@grian是对的。我假设@grian也是对的,我没有发布代码的其余部分,因为它太长了,我的问题本质上是Math.random多次调用是否会影响随机性,否则问题显然在于我的代码,或者测试量不足