日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

囚犯生存概率引发的循环思考

發(fā)布時間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 囚犯生存概率引发的循环思考 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

有一個囚犯,國王打算處決他,但仁慈的國王給了他一個生還的機會。現(xiàn)在擺在他面前有兩個瓶子,一個里面裝了50個白球,一個裝了50個黑球,這個囚犯有一個機會可以隨便怎樣重新分配這些球到兩個瓶子中(當(dāng)然,要保證不空),分配完了之后囚犯被蒙上眼睛,國王隨機取一個瓶子給他,他在里面摸出一個球(因為蒙著眼睛,所以也是隨機抽取),如果白球,則活,否則掛掉。問,這個囚犯如何分配,才能最大化生還幾率。

答案當(dāng)然誰都能猜到,就是只把一個白球放過去。我編了個循環(huán)試了試。遇到問題如下:

我假定一個瓶子中球總數(shù)為:zongshu,白球數(shù)為baiqiu,囚犯活下來的概率為rate。循環(huán)如下:

?for( zongshu=1; zongshu<100; zongshu++){
??for(baiqiu=0;(baiqiu<=zongshu)&&(baiqiu<=50); baiqiu++){
???temprate=(double)baiqiu*0.5/(double)zongshu+(double)(50-baiqiu)*0.5/(double)(100-zongshu);
???if(temprate>rate) {
????rate=temprate;
????b= baiqiu;
????z= zongshu;

?? }

?? else continue;

?}

continue;

}

這個循環(huán)是錯誤的,程序結(jié)果有問題,居然能把rate算到大于1。百思不得其解。而后我改了一下試試。定義了基于heiqiu和baiqiu的循環(huán)如下:

?for(heiqiu=0;heiqiu<=50;heiqiu++){
??for(baiqiu=1;baiqiu<=50;baiqiu++){
???int zongshu=heiqiu+baiqiu;
???temprate=(double)baiqiu*0.5/(double)zongshu+(double)(50-baiqiu)*0.5/(double)(100-zongshu);
???if(temprate>rate) {
????rate=temprate;
????b= baiqiu;
????z= heiqiu+baiqiu;
???}
???else continue;
??}
??continue;
?}

結(jié)果正確。大家知道這是為什么么?

想到問題所在了吧?但是如果重寫循環(huán)你是很難發(fā)現(xiàn)這個錯誤的,所以在定義循環(huán)時你一定要注意循環(huán)是否考慮完全。避免犯這樣的錯誤。

?

?

一程序中的錯誤為:限制白球小于50,沒有限制黑球(zongshu-baiqiu)小于50?

轉(zhuǎn)載于:https://www.cnblogs.com/hold/archive/2010/04/27/2286807.html

總結(jié)

以上是生活随笔為你收集整理的囚犯生存概率引发的循环思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。