0

我创建了一个名为 new 数组的数组并分配了值,因此数组中的第一个节点为 0,其余为 1。

int[] arr = new int[10];
arr[0] = 0;
 for (int m = 1; m < 10; m++) {
         arr[m] = 1;
    }

然后我做了一个循环来分配一个0到1之间的随机变量给它

for(int i = 0;i < 100; i++){
    U = rnd.nextInt(2);
   int j = rnd.nextInt(10);
    arr[j] = U;
}

我正在尝试编写代码来查找该数组中的每个元素至少被分配一次数字 0 的概率。分配为 0 的概率是 0.1?

4

2 回答 2

0
  • 对于第一个元素:它必须在一开始就设置为零,所以概率是1
  • 对于第二个元素:
    • 在每次循环迭代中:
      • 每个元素被选中的可能性相同,这意味着第二个元素有十分之一的机会(概率 0.1)被选中。
      • 所选元素同样可能设置为零或一,这意味着它有二分之一的机会(概率 0.5)被设置为零。
      • “第二个被选中”和“被选中元素置零”这两个事件是独立的,所以我们可以将它们的概率相乘得到“第二个元素置零”事件的概率(意思是“第二个元素被置零”)选择和选择的元素设置为零”):0.1 × 0.5 = 0.05。
      • 这意味着“第二个元素设置为零”事件的概率为 1 - 0.05 = 0.95。
    • 全面的:
      • 由于有 100 次迭代,并且它们都是相互独立的,因此“第二个元素从不设置为零”(意思是“在每次迭代中,第二个元素不设置为零”)的概率为 0.95 100  ≈  ;0.00592。
      • 这意味着“第二个元素至少有一次置零”事件的概率为1 - 0.95 100  ≈ 0.994
  • 第三个、第四个等元素等价于第二个元素——我只是为了方便而选择了第二个元素——所以它们也有1 - 0.95 100  ≈ 0.994的概率在至少一次。
于 2020-04-24T23:08:13.697 回答
0

在您的代码中,概率取决于 nextInt 函数实现。因此,您必须研究用于确定最终概率的随机函数。

于 2020-04-24T17:15:32.220 回答