数组中的Java随机数

数组中的Java随机数,java,Java,所以我对java有点陌生,我需要帮助解决一个问题。 我有以下代码: import java.util.Random; 公共班级委员会 { 私人智能卡; 私有整数对; 私人银行卡; 私人int卡维护; 公共板(整数对){ this.NumberOfCards=NumberOfCards; this.NumberOfPairs=NumberOfPairs; this.CardsRemaining=CardsRemaining; DeckOfCards=新整数[2*对数对]; 随机数=新随机数();

所以我对java有点陌生,我需要帮助解决一个问题。
我有以下代码:

import java.util.Random;
公共班级委员会
{
私人智能卡;
私有整数对;
私人银行卡;
私人int卡维护;
公共板(整数对){
this.NumberOfCards=NumberOfCards;
this.NumberOfPairs=NumberOfPairs;
this.CardsRemaining=CardsRemaining;
DeckOfCards=新整数[2*对数对];
随机数=新随机数();
for(int i=0;i
上面的代码尚未完成,还有许多类需要完成,但是
问题是:

假设
NumberOfPairs
=3
这意味着在数组中,数字0、1、2的位置是随机的,这也意味着数组中有3个位置是“空的”(因为大小是2*
NumberOfPairs

例如,我想做的是:

数组内部仍然是数字0,1,2,但有两次,且顺序为随机顺序,例如:

1,0,2,2,1,0

有人有什么想法吗?提前谢谢


哦,是的,我忘了提到NumberOfPairs是不确定的,它将由用户通过输入给出,因为
Random
是随机的,它不会生成那样的序列。如果这是你想要的,你必须实际生成一个序列

索引中有一些棘手的数学问题,你应该手工写出来看看它是如何工作的

    Integer deck = new Integer[2*NumberOfPairs];
    for (int i = 0; i < NumberOfPairs; i++) {
        deck[i*2] = i;
        deck[i*2+1] = i;
    }
现在您有了一些随机顺序的预设值。如果您对
DeckOfCards
使用
ArrayList
而不是普通的int数组,那么这就不那么复杂了。(代码未经测试。)

(为了比较,我将使用
DeckOfCards
编写与
ArrayList
相同的代码)

DeckOfCards=newarraylist();
for(int i=0;i

(再编辑一次:如果你真的在制作一副牌,通常的方法是分配一个
列表
数字0到51(每张牌52个值)。然后一套牌是数字0到3(空格、心脏、钻石、俱乐部)就像这张
卡/13
——这是
卡除以13
,每张卡的正面是
卡%13
,其中10或更少的面值是他们自己的数字+1,A是0,杰克、皇后和国王的值是10、11和12。)

您要做的主要工作是将所有数字放入一个数组中,然后将其填充


首先,您必须创建一个包含所有所需数字的数组。在您的情况下,所需的数字是从0到NumberOfPairs的两倍。例如,如果NumberOfPairs=3,则您拥有的数字是(0,0,1,1,2,2)。因此,您得到以下代码:

import java.util.Random;

public class Board {
    private int NumberOfCards;
    private int NumberOfPairs;
    private int[] DeckOfCards;
    private int CardsRemaining;
    
    public Board(int NumberOfPairs){
        this.NumberOfPairs = NumberOfPairs;
        this.NumberOfCards = NumberOfCards*2;
        this.CardsRemaining = CardsRemaining;
        DeckOfCards = new int [2*NumberOfPairs];
        Random numbers = new Random();

        for (int i = 0; i < NumberOfCards; i++) {
            for (int j = 0; j < 1; j++) {
                DeckOfCards[i] = i;
            }
        }
    }
}
import java.util.Random;
公共班级委员会{
私人智能卡;
私有整数对;
私人银行卡;
私人int卡维护;
公共板(整数对){
this.NumberOfPairs=NumberOfPairs;
这个.NumberOfCards=NumberOfCards*2;
this.CardsRemaining=CardsRemaining;
DeckOfCards=新整数[2*对数对];
随机数=新随机数();
对于(int i=0;i
最后,你必须把数字加进去。要把数字加进去,你必须 使用随机位置切换阵列的每个当前位置。因此,对于此步骤,您的代码如下所示:

import java.util.Random;

public class Board {
    private int NumberOfCards;
    private int NumberOfPairs;
    private int[] DeckOfCards;
    private int CardsRemaining;
    
    public Board(int NumberOfPairs){
        this.NumberOfPairs = NumberOfPairs;
        this.NumberOfCards = NumberOfPairs*2;
        this.CardsRemaining = CardsRemaining;
        DeckOfCards = new int [2*NumberOfPairs];
        private int temp;
        private int randomPos;

        Random numbers = new Random();
        for (int i = 0; i < NumberOfCards; i++) {
            for (int j = 0; j < 1; j++) {
                DeckOfCards[i] = i;
            }
        }
        
        for (int i = 0; i < NumberOfCards; i++) {
            randomPos = random.nextInt(NumberOfCards);
            temp = DeckOfCards[i];
            DeckOfCards[i] = DeckOfCards[randomPos];
            DeckOfCards[randomPos] = DeckOfCards[temp];                
        }
    }
}
import java.util.Random;
公共班级委员会{
私人智能卡;
私有整数对;
私人银行卡;
私人int卡维护;
公共板(整数对){
this.NumberOfPairs=NumberOfPairs;
这个.NumberOfCards=NumberOfPairs*2;
this.CardsRemaining=CardsRemaining;
DeckOfCards=新整数[2*对数对];
私人内部温度;
私人互联网终端;
随机数=新随机数();
对于(int i=0;i

你完成了。我希望我能帮助你。

将数字放入数组中,要么
0 0 1 2
要么
0 1 2 0 1 2
,然后将其洗牌。哦,是的,我忘了提到NumberOfPairs是不确定的,用户将通过input给出,然后再做同样的事情,对于输入的对数。因为这是一个分配,我们有We’我要用数组来实现它。感谢您花时间思考。请小心使用
集合。shuffle()
然后。您的讲师可能希望您自己实现这样的方法。是的,谢谢!!
DeckOfCards = new ArrayList<>();
for (int i = 0; i < NumberOfPairs; i++) {
   DeckOfCards.add( i );
   DeckOfCards.add( i );
}
Collections.shuffle( DeckOfCards );
import java.util.Random;

public class Board {
    private int NumberOfCards;
    private int NumberOfPairs;
    private int[] DeckOfCards;
    private int CardsRemaining;
    
    public Board(int NumberOfPairs){
        this.NumberOfPairs = NumberOfPairs;
        this.NumberOfCards = NumberOfCards*2;
        this.CardsRemaining = CardsRemaining;
        DeckOfCards = new int [2*NumberOfPairs];
        Random numbers = new Random();

        for (int i = 0; i < NumberOfCards; i++) {
            for (int j = 0; j < 1; j++) {
                DeckOfCards[i] = i;
            }
        }
    }
}
import java.util.Random;

public class Board {
    private int NumberOfCards;
    private int NumberOfPairs;
    private int[] DeckOfCards;
    private int CardsRemaining;
    
    public Board(int NumberOfPairs){
        this.NumberOfPairs = NumberOfPairs;
        this.NumberOfCards = NumberOfPairs*2;
        this.CardsRemaining = CardsRemaining;
        DeckOfCards = new int [2*NumberOfPairs];
        private int temp;
        private int randomPos;

        Random numbers = new Random();
        for (int i = 0; i < NumberOfCards; i++) {
            for (int j = 0; j < 1; j++) {
                DeckOfCards[i] = i;
            }
        }
        
        for (int i = 0; i < NumberOfCards; i++) {
            randomPos = random.nextInt(NumberOfCards);
            temp = DeckOfCards[i];
            DeckOfCards[i] = DeckOfCards[randomPos];
            DeckOfCards[randomPos] = DeckOfCards[temp];                
        }
    }
}