100000もある配列の中から配列の中身が「0」の物だけ抜き出して、さらにその抜き出した0の中からランダムに1つ配列を選ぶっていうのを作りたいんだけど

while(x!=0){
y=rand()%100000;
if(array[y]==0) x=0;
}

これだと配列の中身が0の物が1つしかなかったら特定に膨大な時間がかかるよね
何かいい方法ないですか?