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 分配随机值?
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 分配随机值?
来自 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() 调用ExponentialDistribution
的sample()
方法。
现在为(int)
.
(int)
在另一个 Object/primitive 之前将一个 Object 类型或原始类型放在括号中(在这种情况下是 int )称为“强制转换”。在 Java 中强制转换变量
差不多,因为sample()
返回 a double
,但是timestamp
stores ints
,我们需要切换它们的一种类型(它们必须匹配),而且改变exp.sample()
's 更容易。
所以,总而言之,这就是“获取对象exp
,调用它的方法sample()
,然后将其转换为int
”。
ExponentialDistribution 类在Exponential Distribution之后生成一个伪随机数。它是伪的,因为它不是真正随机的。它用于生成您获得的每个随机数。
exp.sample() 方法返回序列中的下一个随机数。使用 (int) 你只得到它的整数部分。