0
ExponentialDistribution exp = new ExponentialDistribution(4.0);
        for(int i = 1; i < 20; i++){
            timestamp[i] = (int)exp.sample() + 1+timestamp[i-1];

这里的时间戳是一个整数数组,并在上述条件下为其分配了一个随机值。(int)exp.sample() 做什么以及它如何为 i 分配随机值?

4

2 回答 2

0

来自 ExponentialDistribution API: http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/distribution/ExponentialDistribution.html#sample()

公共双样本()

生成从此分布中采样的随机值。默认实现使用反转方法。

算法描述:此实现使用反演方法从均匀偏差中生成指数分布的随机值。

因此,当您看到 时(int)exp.sample(),我们将其转换为它选择的随机值。exp 是ExponentialDistribution(4.0)我们创建的实例,所以 exp.sample() 调用ExponentialDistributionsample()方法。

现在为(int).

(int)在另一个 Object/primitive 之前将一个 Object 类型或原始类型放在括号中(在这种情况下是 int )称为“强制转换”。在 Java 中强制转换变量

差不多,因为sample()返回 a double,但是timestampstores ints,我们需要切换它们的一种类型(它们必须匹配),而且改变exp.sample()'s 更容易。

所以,总而言之,这就是“获取对象exp,调用它的方法sample(),然后将其转换为int”。

于 2016-08-16T18:45:07.217 回答
0

ExponentialDistribution 类在Exponential Distribution之后生成一个伪随机数。它是伪的,因为它不是真正随机的。它用于生成您获得的每个随机数。

exp.sample() 方法返回序列中的下一个随机数。使用 (int) 你只得到它的整数部分。

于 2016-08-17T09:21:13.890 回答