gpt4 book ai didi

java - java随机类

转载 作者:行者123 更新时间:2023-12-01 18:19:04 24 4
gpt4 key购买 nike

我一直在做一些有关 Random 类的使用的练习。

我有一个名为 Card 的类,它有五个实例变量,其中包含对应该位于指定范围内的整数的引用。

这五个数字是使用随机类生成的。代码如下:

public class Card
{

private String cardName;
private int yearOfInvention;
private int novelty;
private int popularity;
private double trendiness;
private int numberOfDialects;


public Card(String cardName) {
this.cardName = cardName;
Random rand = new Random();
yearOfInvention = 1900 + rand.nextInt(111);
novelty = rand.nextInt(10);
popularity = rand.nextInt(100);
trendiness = rand.nextDouble() + rand.nextInt(4);
numberOfDialects = rand.nextInt(50);
}

对于“趋势”,我的值需要是 0-5 之间的任何数字,包括小数部分,但只能保留一位小数。

目前它会给我例如

私有(private)双潮流1.2784547479963435

是否有一种方法可以限制小数点的数量而不进行四舍五入,并影响“随机性”?

最佳答案

最简单的方法可能是生成一个 0-50 之间的数字,然后除以 10。

trendiness = rand.nextInt(51) / 10d;

只是不要忘记添加描述性注释,或者将其提取到具有适当名称的辅助方法中。这样一行代码可能会让人感到困惑,因为它的意图不是很清楚。

<小时/>

编辑回答OP的非常好的问题:

Why the digit between parentheses is 51 and not 50?

这由您决定哪个更正确。您的“0-5之间的数字”规范不是很清楚。 rand.nextInt(51) 调用将在 [0, 50] 区间内生成一个随机整数。 rand.nextInt(50) 将生成一个区间 [0, 50) 内的数字(注意半开区间),即 0-49。您选择最适合您的东西。

Also, what is the purpose of the d after the 10?

让我们看看。尝试运行这个:

System.out.println(new Random().nextInt(50) / 10);

它只输出数字0-4。问题是,如果表达式中的所有数字都是整数,则除法是基于整数的。它将四舍五入任何小数余数。为了避免这种情况,表达式中至少需要有一个实数(通常是double)。

这就是 10d 的作用。它与 10.0(double)10 相同。

关于java - java随机类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28087053/

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