【发布时间】:2020-10-29 17:36:48
【问题描述】:
我试图在一个常见的 Java shuffle 纸牌算法中更好地理解这段代码:
// Random for remaining positions.
int r = i + rand.nextInt(52 - i);
为什么需要“填充”或将i 索引添加到生成的随机数中?看起来当您迭代并添加 i 时,通过减去 i,您可以保持随机数的最大可能范围从 0 到 51,但为什么不这样做:
int r = rand.nextInt(52);
完整代码:
// Function which shuffle and print the array
public static void shuffle(int card[], int n)
{
Random rand = new Random();
for (int i = 0; i < n; i++)
{
// Random for remaining positions.
int r = i + rand.nextInt(52 - i);
//swapping the elements
int temp = card[r];
card[r] = card[i];
card[i] = temp;
}
}
【问题讨论】:
标签: java algorithm random shuffle