搬運字節跳動算法面試題:
題目描述:
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;
}
}
大致思路吧。。。