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分配随机值?
答案 0 :(得分:0)
来自ExponentialDistribution API: http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/distribution/ExponentialDistribution.html#sample()
public double sample()
生成从此采样的随机值 分配。默认实现使用反转方法。
算法描述:此实现使用反演方法 从均匀生成指数分布的随机值 偏离。
因此,当您看到(int)exp.sample()
时,我们会将其转换为所选的随机值。
exp是我们创建的ExponentialDistribution(4.0)
的实例,因此exp.sample()调用ExponentialDistribution
&#39; sample()
方法。
现在是(int)
。
在另一个Object / primitive之前将对象类型或基本类型放在括号中(在本例中为(int)
})&#34; cast&#34;。 Casting variables in Java
相当多,因为sample()
会返回double
,但timestamp
存储ints
,我们需要切换其中一种类型(它们必须匹配),并且&# 39; s waaaaay更容易改变exp.sample()
。
所以,总而言之,这表示&#34;将对象exp
,调用它的方法sample()
,然后将其转换为int
&# 34。
答案 1 :(得分:0)
ExponentialDistribution类在Exponential Distribution之后生成一个伪随机数。它是伪的,因为它不是真正随机的。它使用一个等式来生成您获得的每个随机数。
方法exp.sample()返回序列中的下一个随机数。使用(int)你只得到它的整数部分。