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

这里的timestamp是一个整数数组,并且在上述条件下给它赋一个随机值。 (int)exp.sample()做了什么以及它如何为我分配一个随机值?(int)exp.sample()如何在代码中工作?

+3

不知道。什么是“ExponentialDistribution”? –

+0

显然它在apache.commons包中:http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/distribution/ExponentialDistribution.html我分享这个的主要原因是以此作为我可以说有意义的评论的借口:你的名字必须是对The Who的引用,对吧? –

+4

'(int)exp.sample()'在'exp'引用的对象上调用'sample()'方法,然后将返回值转换为'int'。所有***很***基本的Java东西。建议:学习Java。 – Andreas

回答

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)

在另一个Object/primitive之前放置一个对象类型或基元类型(在本例中为(int))称为“casting”。 Casting variables in Java

差不多,因为sample()回报double,但timestampints,我们需要切换的类型之一(它们必须匹配),这是waaaaay更容易改变exp.sample()的。

因此,总而言之,这说“拿对象exp,称之为方法sample(),然后将其转换为int”。

+0

这东西我也经历了,但我没有得到如何生成以下输出。 –

+0

timestamp给出timestamp [i]的值,并运行given(int)exp.sample()。我想知道是否有一组特定的数字从哪个运行生成,或者它取决于我在循环条件下的状态?........ timestamp = 9 ran = 8, timestamp = 10 ran = 7 , 时间戳= 13跑= 6, 时间戳= 26,跑= 6, 时间戳= 34,跑= 3, 时间戳= 35,跑= 7, timestamp40ran3 timestamp41ran3 timestamp43ran7 timestamp45ran4 timestamp48ran9 timestamp51ran11 timestamp53ran10 timestamp58ran3 timestamp63ran5 timestamp65ran3 tim estamp67ran8 timestamp68ran3 timestamp72ran3 –

+0

我没有看到'ran',你刚刚评论的内容是100%难以辨认的。但我更新了我的解释。如果你追求的是如何从'sample()'中获取值,那么它就会从指数分布中抓取它,其平均值为4.如果你想更多地了解它是如何实现的,可以使用以下源代码:http ://commons.apache.org/proper/commons-math/apidocs/src-html/org/apache/commons/math3/distribution/ExponentialDistribution.html –

0

类ExponentialDistribution会在Exponential Distribution之后生成一个伪随机数。这是假的,因为它不是真正的随机。它用一个方程来产生你得到的每一个随机数。

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

相关问题