+-

我创建了一个名为new array的数组,并分配了值,所以数组中的第一个节点是0,其余的是1.然后我做了一个循环,将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吗?
0
投票
投票
在你的代码中,概率取决于nextInt函数的实现.所以,你必须研究你用来确定最终概率的随机函数。
0
投票
投票
对于第一个元素:在最开始的时候必然设置为0,所以概率是
1. 对于第二个元素。 在每次循环迭代中 每一个元素都有同样的可能被选中,这意味着第二个元素有十分之一的机会被选中(概率0. 1)。 被选中的元素同样有可能被设置为0或1,也就是说它有二分之一的机会(概率0.5)被设置为0。 "第二个被选择 "和 "被选择的元素被置为零 "这两个事件是独立的,所以我们可以将它们的概率相乘,得到 "第二个元素被置为零 "事件的概率(意思是 "第二个元素被选择,被选择的元素被置为零")。0.1 × 0.5 = 0.05. 这意味着 "第二个元素被
不 设为零 "的概率为1-0.05=0.95。 总的来说。 由于有100次迭代,而且都是相互独立的,所以 "第二个元素是...
从来没有 设为零"(意思是 "在每一次迭代中,第二个元素不设为零")的概率为0.95。100 ≈ 0.00592. 这意味着 "第二个元素被设置为零 "的事件。
至少一次"有概率
1 − 0.95100 ≈ 0.994. 第三个、第四个等元素相当于第二个元素--我只是为了方便而选择了第二个元素--所以它们也各自有一个概率是: 。
1 − 0.95100 ≈ 0.994 至少有一次被设为零的。