Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';我找不到一种方法来创建唯一的随机数…(宾果游戏)_Java_Arrays_Math - Fatal编程技术网

Java Can';我找不到一种方法来创建唯一的随机数…(宾果游戏)

Java Can';我找不到一种方法来创建唯一的随机数…(宾果游戏),java,arrays,math,Java,Arrays,Math,我正在创建一个程序,每次你玩的时候都会生成一张随机的宾果卡。我不知道怎样才能不得到重复的随机数。我总是得到至少两个相同的数字。我尝试过许多不同的方法,但这就是我最终得到的结果,而且仍然重复。请帮忙 for (int p = 0; p < b.length; p++) { //loop that assigns random number b[p] = (int) (Math.random() * 14 + 1);

我正在创建一个程序,每次你玩的时候都会生成一张随机的宾果卡。我不知道怎样才能不得到重复的随机数。我总是得到至少两个相同的数字。我尝试过许多不同的方法,但这就是我最终得到的结果,而且仍然重复。请帮忙

  for (int p = 0; p < b.length; p++) { //loop that assigns random
        number
                        b[p] = (int) (Math.random() * 14 + 1);
                        do {
                            b[1] = (int) (Math.random() * 14 + 1);
                        } while (b[1] == b[0]);
                        do {
                            b[2] = (int) (Math.random() * 14 + 1);
                        } while (b[2] == b[1] || b[2] == b[0]);
                        do {
                            b[3] = (int) (Math.random() * 14 + 1);
                        } while (b[3] == b[0] || b[3] == b[1] || b[3] == b[2]);
                        do {
                            b[4] = (int) (Math.random() * 14 + 1);
                        } while (b[4] == b[0] || b[4] == b[1] || b[4] == b[2] || b[4] == b[3]);

                    }
for(int p=0;p
假设允许您导入:

import java.util.ArrayList;
import java.util.Collections;
只需按顺序创建一副牌,然后随机化顺序。从列表中删除项目,以便不能多次拾取(或弹出)该项目

        ArrayList<Integer> cards = new ArrayList<Integer>();

        // create a list in order
        for (int i = 1; i < 14; i++) {
            cards.add(i);
        }

        Collections.shuffle(cards); // randomize

        for (int i = 1; i < 14; i++) {
            cards.remove(i-1); // pop
            // do something with the card
        }
ArrayList cards=new ArrayList();
//按顺序创建一个列表
对于(int i=1;i<14;i++){
增加(i);
}
收藏。洗牌(卡片);//随机化
对于(int i=1;i<14;i++){
卡片。移除(i-1);//弹出
//用这张卡做点什么
}

如果您只需要random
double
s,您可以在循环外实例化一个
random
,并将同一实例与
random.nextDouble()
一起使用,以获得伪随机数

Random random = new Random();
for (int p = 0; p < b.length; p++) {
   b[p] = (int) (random.nextDouble() * 14 + 1);
   do {
      b[1] = (int) (random.nextDouble() * 14 + 1);
   } while (b[1] == b[0]);
...
}
Random Random=new Random();
对于(int p=0;p
为什么不为该范围生成数字列表,将其洗牌,然后选择一些?
Math.random()
生成
double
s。由于要将每个值转换为
int
,您确定没有遇到舍入错误吗?谢谢。。我仍然是一个初学者,所以我很感谢你的帮助。@JoshuaSaikali没有问题。将来,如果一个答案对你有效,请接受它。它让其他人知道问题解决了更不用说帮助回答了呃(我)谢谢。。我仍然是一个初学者,所以我很感谢你的帮助。@JoshuaSaikali太棒了,很高兴它帮助了我!