2016-01-21 77 views
1

我读数据结构和算法在Java中的书,我碰到以下问题,我希望得到的帮助就来了:java.util.Random中挖掘稍深

假设你是给出一个数组,A,包含使用方法r.nextInt(10)生成的100个整数,其中r是类型为java.util.Random的对象。令x表示A中整数的乘积。有一个单数,x的概率至少等于0.99。那个数字是多少?描述x等于那个数字的概率的公式是什么?

我认为x等于零;因为很可能会生成0。但是,这只是一个猜测。我无法找到配方。 java documentation未指定随机化公式,我无法在此处或在使用Google进行搜索之后找到任何相关主题。

我想得到一些帮助的概率公式请。提前致谢。

+3

这个问题不是关于'java.util.Random'。这是关于概率的一般数学问题 - 任何统一的随机生成器都会导致相同的答案。 – gudok

+0

由于它是产品,而不是我错误地阅读的,因此大多数时候'x'应该是0。但是在这100个数字中有一个很小的机会,不会有一个0会发生,因此可能性为0.99。我不确定这个概率的确切公式,但我相信它是符合1的概率的 - (概率0,即1/10,除以发生概率的数量,即100)。 – jonhopkins

回答

5

数组元素的可能值为0..9,每个元素的概率为1/10。如果其中一个元素为0,则产品也将为0。所以我们计算至少有一个元素为0的概率。

事实证明,这与所有大于零的元素相反。元素大于0的概率是9/10,因此所有元素大于零的概率是(9/10)^ 100。

因此,至少一个元素为0的概率为1 - (9/10)^ 100,大约为0.9999734。

1

关于nextInt:的Javadoc指定:

均匀分布int值介于0(含)和 指定值(不)

一个 “均匀分布” 是一个分配,其中每个结果同样可能。

因此特定结果的机会是“1/[可能结果的数量]”(因此它们全部合计为1)。

关于数组: 填充数组可以被视为观察100个统计独立事件。

您应该阅读,了解组合多个独立事件时数学如何工作。