为啥 int answer = generator.nextInt(10) + 1;只产生 1 到 10 之间的数字?

Posted

技术标签:

【中文标题】为啥 int answer = generator.nextInt(10) + 1;只产生 1 到 10 之间的数字?【英文标题】:Why does int answer = generator.nextInt(10) + 1; only produce numbers between 1 and 10?为什么 int answer = generator.nextInt(10) + 1;只产生 1 到 10 之间的数字? 【发布时间】:2016-04-18 05:34:42 【问题描述】:

我不明白为什么它不会生成超过 11 个。

这是我的测试代码:

import java.util.Random;

public class randomNumberTest

    public static void main(String[] args)
    
         Random rn = new Random();
         //tests random number generator (between 1(inc) and 10(excl))
         for(int i =0; i < 100; i++)
         
             int answer = rn.nextInt(10) + 1;
             System.out.println(answer);
         
    

【问题讨论】:

您是否阅读了您所调用方法的文档?您自己的代码中的注释说上限是排他性的(“excl”)......如果nextInt(10) 只能返回一个最大为 9 的值,并且您要加 1,您将如何期望得到 11 的答案到那个? 是的,我现在意识到我犯了一个愚蠢的错误。我确实读过它,但由于某种原因它没有沉入其中。很抱歉发了不好的帖子。 你关注这个帖子已经在讨论***.com/questions/363681/…***.com/questions/20389890/… @SeanM - 如果您认为这是一篇糟糕的帖子,您可以随时使用问题下方的链接将其删除。欢迎使用 ***! 感谢您的热烈欢迎啊哈哈。我有很多要学习的!不幸的是,我不能再删除它了。 【参考方案1】:

阅读 Javadoc。 rn.nextInt(10) 生成从 0 到 9 的数字。加 1 得到从 1 到 10 的范围。

返回一个伪随机、均匀分布的 int 值,介于 0(包括)和指定值 (不包括)

【讨论】:

以上是关于为啥 int answer = generator.nextInt(10) + 1;只产生 1 到 10 之间的数字?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 werkzeugs `generate_password_hash` 的输出不是恒定的?

为啥 .replace() 不能处理从 escodege.generate() 生成的大字符串?

为啥 fit_generator 的准确性与 Keras 中的 evaluate_generator 的准确性不同?

history=model.fit_generator() 为啥 keras 历史是空的?

为啥在 Keras 中 fit_generator 的准确度、evaluate_generator 的准确度和自定义准确度不同?

pycharm为啥使用wc.generate会报错cann