java.util.Random有点深入挖掘

时间:2016-01-21 14:30:18

标签: java random formula probability

我正在阅读Java书籍中的数据结构和算法,我遇到了以下问题,我希望得到帮助:

  

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

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

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

3 个答案:

答案 0 :(得分:5)

数组元素的可能值为0 .. 9,每个的概率为1/10。如果其中一个元素为0,则该乘积也为0。因此,我们计算至少一个元素为0的概率。

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

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

答案 1 :(得分:1)

关于nextInt:javadoc指定:

  

在0(包括)和0之间均匀分布的int值   指定值(不包括)

a"均匀分布"是一种分布,每个结果都是同样可能的。

因此,特定结果的机会是" 1 / [可能结果的数量]" (所以他们都加1)。

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

您应该阅读关于组合多个独立事件时数学如何工作的信息。

答案 2 :(得分:0)

https://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt(int)

正如您所料,它将为0

r.nextInt(10)

将返回0到9之间的数字

任何0 * 1-9的乘积都是0,因此对于100个随机数,从该函数返回0的可能性非常低。