(int)exp.sample()如何在代码中工作?

时间:2016-08-16 18:39:14

标签: java random exponentiation exponential-distribution cloudsim

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分配随机值?

2 个答案:

答案 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)你只得到它的整数部分。