搬运字节跳动算法面试题:
题目描述:
10个小球,随机分到12个盒子里,求恰好10个盒子都为空的概率。要求用程序模拟十万次,暴力求出该概率
题目分析:我们可以利用反求法,10个小球分别放在10个不同的盒子的情况是容易判断的吧,只要求出这个数目,取反就好了,模拟随机分配使用random函数
不知道对不对的代码贴一下😂😂😂:
class Solution{
public boolean isOK(){
int cnt = 10;
boolean f =false;
boolean[] mark = new boolean[10];
while(!f&&cnt!=0){
int num = (Math.random())*12;
if(mark[num]) f = true;
mark[num] = true;
cnt--;
}
return !f;
}
public int solve() {
int sum = 0;
for(int i = 0;i < 100000;i++){
if(isOK()) sum++;
}
return sum/100000;
}
}
大致思路吧。。。