【问题标题】:Meaning of random.nextInt(12*4+2)random.nextInt(12*4+2) 的含义
【发布时间】:2015-11-18 13:28:52
【问题描述】:

所以再一次给了我们应该使用的代码片段,而我真的不明白:

int r = random.nextInt(12*4+2)

有什么区别吗 random.nextInt(50) ?我有点迷茫……

提前致谢,

短路由器

【问题讨论】:

  • 不,两者没有区别。我相信第一个对开发人员来说更冗长
  • 不,完全没有语义差异。但是,将其视为12*4+2 而不仅仅是50 可能有一些意义。例如,86400 看起来是一个奇怪的、毫无意义的数字 - 但24 * 60 * 60 显然(更多)是一天中的秒数。
  • 哇,真快!非常感谢,这应该从 12*4 颜色和 2 张黑色卡片生成卡片 ID。我想我必须给每个生成的数字一个含义。

标签: java random int next


【解决方案1】:

12 * 4 + 2 是一个编译时可评估的常量表达式

它完全等同于50,但为了可读性可能会采用前者。

random#nextInt(n)在[0, n)中绘制一个均匀分布的随机整数。

【讨论】:

    【解决方案2】:

    来自random.nextInt()documentation

    返回一个伪随机、均匀分布的 int 值,介于 0(含)和指定值(不含)之间,取自此随机数生成器的序列。

    这两种表达方式没有区别

    int r = random.nextInt(12*4+2)
    random.nextInt(50)
    

    自从

    int r = random.nextInt(12*4+2)
    

    将被评估为

    int tmp = 12*4+2;
    int r = random.nextInt(tmp);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多