gpt4 book ai didi

java - 了解java中的数组

转载 作者:行者123 更新时间:2023-11-29 07:50:43 25 4
gpt4 key购买 nike

我正在阅读一本关于 Java 的书,在“数组”下给出了这个例子。

public class Deck {
public static void main(String[] args) {
String[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
String[] rank = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" };

// avoid hardwired constants
int SUITS = suit.length;
int RANKS = rank.length;
int N = SUITS * RANKS;

// initialize deck
String[] deck = new String[N];
for (int i = 0; i < RANKS; i++) {
for (int j = 0; j < SUITS; j++) {
deck[SUITS*i + j] = rank[i] + " of " + suit[j];
}
}

// shuffles our deck of cards
for (int i = 0; i < N; i++) {
int r = i + (int) (Math.random() * (N-i));
String t = deck[r];
deck[r] = deck[i];
deck[i] = t;
}

// print shuffled deck
for (int i = 0; i < N; i++) {
System.out.println(deck[i]);
}
}

}

我想知道为什么用“int r = i + (int) (Math.random() * (N-i));”来洗牌?请解释这一行做了什么以及为什么明确使用这一行。(关于为什么使用它的逻辑)

最佳答案

Math.random() 返回一个介于 0.0 和 1.0 之间的随机 double,当这个数字乘以 N-i 时,我们得到一个数字 ( double) 在这两个数字之间的差值范围内:[0,N-i]

通过添加 i,我们将范围从 [0,N-i] 转移到 [i,N] 并且因为它是 double 的,我们转换为 int 以接收整数。

关于java - 了解java中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475147/

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