嘿伙计们,我只是在阅读我的笔记,并且很难理解他们用来洗牌的算法。这是它的样子。有人可以尽可能详细地解释每一行吗?非常感谢你。
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;
}
}
答案 0 :(得分:4)
for循环
for (int first = 0; first < deck.length; first++)
循环通过牌组中的所有牌。它基本上说
对于牌组中的每张牌......做一些事情
&#34;一些东西&#34;是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);
&#34;你为什么要这样做?&#34;您询问。 &#34;混洗&#34;甲板上只是交换卡片中卡片的位置,如
5颗钻石登顶,3支球杆进入中间位置,黑桃之王进入第23位......
因此,对于每张卡,该程序&#34;交换&#34;它与卡在甲板上的随机位置。这就是为什么它从0到51选择一个随机数。
让我们说随机数为25.然后将第一张牌与牌组索引25处的牌交换:
Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;
如果您不了解交换是如何工作的。我可以解释一下。
在Java中,你不能通过将变量B中的东西放在变量A中的东西和B中的A中的东西来交换东西:
// 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];
最后,从那个&#34;某个地方拿起A中的东西&#34;把它放在B:
deck[second] = temp;
唷!那是很多步骤!
答案 1 :(得分:0)
该算法执行以下操作,
@staticmethod
def UnicodeFilter(var):
temp = var
temp = temp.encode(errors='ignore').decode('utf-8')
temp = temp.replace(chr(0x2019), "")
temp = temp.replace(chr(0x003c), "(lessthan)")
temp = temp.replace(chr(0x003e), "(greaterthan)")
temp = temp.replace(chr(0xd83c), "")
temp = temp.replace(chr(0xddfa), "")
temp = temp.replace(chr(0xddf8), "")
temp = temp.replace(chr(0xd83d), "")
temp = temp.replace(chr(0xdc4d), "")
temp = temp.replace(chr(0x2026), "")
temp = temp.replace(u"\U0001F1FA", "")
temp = temp.replace(u"\U0001F1F8", "")
temp = temp.replace(u"\U0001F44D", "")
temp = temp.replace(u"\U00014F18", "")
temp = temp.replace(u"\U0001F418", "")
temp = temp.replace(u"\U0001F918", "")
temp = temp.replace(u"\U0001F3FD", "")
temp = temp.replace(u"\U0001F195", "")
temp = Functions.ToSQL(temp)
return str(temp)
答案 2 :(得分:-1)
Click on this github link for the solution
使用reservSampleShuffle,这里不需要额外的数据结构及其到位shuffle