gpt4 book ai didi

java - Java中的洗牌算法

转载 作者:行者123 更新时间:2023-12-01 21:43:34 24 4
gpt4 key购买 nike

嘿伙计们,我只是在读我的笔记,很难理解他们用来洗牌的算法。它看起来是这样的。有人可以尽可能详细地解释每一行吗?非常感谢。

public void shuffle()
{
// next call to method dealCard should start at deck[0] again
currentCard = 0;

// for each Card, pick another random card (0-51) and swap them
for (int first = 0; first < deck.length; first++)
{
// select a random number between 0 and 51
int second = randomNumbers.nextInt(NUMBER_OF_CARDS);

// swap current Card with randomly selected Card
Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;
}
}

最佳答案

for循环

for (int first = 0; first < deck.length; first++)

循环浏览这副牌中的所有牌。它基本上说的是

For each of the cards in the deck... do some stuff

“一些东西”是 for 循环内的代码:

    // select a random number between 0 and 51
int second = randomNumbers.nextInt(NUMBER_OF_CARDS);

// swap current Card with randomly selected Card
Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;

它首先选择一个 0 到 51 之间的随机数。

int second = randomNumbers.nextInt(NUMBER_OF_CARDS);

“你为什么要这么做?”你问。 “洗牌”牌组只是交换牌组中纸牌的位置,例如

5 of diamonds goes to the top, 3 of clubs goes to somewhere in the middle, king of spades goes to the 23rd place...

因此,对于每张牌,程序都会将其与牌组中随机位置的牌“交换”。这就是为什么它选择 0 到 51 之间的随机数。

假设随机数是 25。然后它将把第一张牌与牌组数组中索引 25 处的牌交换:

Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;

如果您不明白交换是如何工作的。我可以解释一下。

在Java中,你不能仅仅通过将变量B中的内容放入变量A中并将A中的内容放入B中来交换内容:

// This code doesn't swap a and b
int a = 10;
int b = 20;
a = b;
b = a;

你需要先把东西放在 A 的某个地方,

Card temp = deck[first];

然后将B中的东西移动到A中,

deck[first] = deck[second];

最后,从那个“某个地方”拿起A中的东西并将其放入B中:

deck[second] = temp;

唷!这是很多步骤!

关于java - Java中的洗牌算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36168226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com