【问题标题】:Random values combined with assignment/combinator operator随机值与赋值/组合运算符相结合
【发布时间】:2013-02-18 18:15:24
【问题描述】:

以下代码示例是创建两个随机值,还是重复使用第一个?

Random r = new Random();
int[] a = new int[10];

a[r.nextInt(10)] += 1;

// Equals this, creating two random values:
a[r.nextInt(10)] = a[r.nextInt(10)] + 1;

// Or this, using 6 as the result of the first random operation
a[6] = 6 + 1;

编辑:当我们这样做的时候,这个操作符(以及其他像-=/= 等)有名字吗?

【问题讨论】:

  • 虽然我没有投反对票,但了解 += 是什么就足以回答这个问题,这在 JLS 中。测试很容易,尽管您需要进行迭代以确保您超过了重复随机值的概率。您不需要长时间迭代。

标签: java random assignment-operator


【解决方案1】:

当你写a[r.nextInt(10)] += 1; 时,只会生成一个随机数。因此,如果这个随机数恰好是6,这相当于a[6] = a[6] + 1;(但效率稍高一些)。

这个操作符(以及其他类似 -=、/= 等的操作符)有名字吗?

它们被称为快捷赋值运算符。

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 2011-11-16
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多