怎么用c語言編寫一個(gè)程序,可以在A和B兩個(gè)選項(xiàng)中隨機(jī)出現(xiàn)一個(gè)結(jié)果,概率為50%?
網(wǎng)友解答: 給一個(gè)參考思路,可以寫一個(gè)子程序,其功能是,在A和B兩個(gè)選項(xiàng)中均勻的返回其中的一個(gè),代碼可以參考如下:上面代碼中先定義包含兩個(gè)選項(xiàng)的數(shù)組opts,然后產(chǎn)生1-10之間的隨機(jī)整
給一個(gè)參考思路,可以寫一個(gè)子程序,其功能是,在A和B兩個(gè)選項(xiàng)中均勻的返回其中的一個(gè),代碼可以參考如下:
上面代碼中先定義包含兩個(gè)選項(xiàng)的數(shù)組opts,然后產(chǎn)生1-10之間的隨機(jī)整數(shù)data,然后定義一個(gè)整數(shù)i,其值取決于data值所在的區(qū)間范圍,若data值在1-5之間,則i=0,否則i=1。最后將i的值作為索引,索引出opts對應(yīng)的選項(xiàng)就可以了,0索引出選項(xiàng)A,1索引出選項(xiàng)B。
下面寫一個(gè)測試程序代碼如下:
其運(yùn)行結(jié)果如下圖所示:
在10次結(jié)果中,選項(xiàng)A和B基本上是均勻出現(xiàn)的。
當(dāng)然如果你的測試次數(shù)足夠多的話,選項(xiàng)A和B出現(xiàn)的概率結(jié)果更接近于50%。
網(wǎng)友解答:呵呵,感謝樓主提問這個(gè)問題,這是在考我智商呢!咱能不能不出這些腦筋急轉(zhuǎn)彎行不!呵呵開個(gè)玩笑非常感謝樓主給我這個(gè)機(jī)會,我的答案是:用c語言啟動兩個(gè)線程一個(gè)選擇a選項(xiàng),一個(gè)線程選b選項(xiàng),并且選擇是隨機(jī)的,但可以保障概率肯定是50%的!那為啥是隨機(jī)的呢?是因?yàn)榫€程是被操作系統(tǒng)調(diào)度的,那么調(diào)度有一定的算法給我們的表象是選擇答案是隨機(jī)的,但兩個(gè)線程輸出選項(xiàng)肯定是50%,為什么呢?這原理很簡單如果我給兩個(gè)線程加把鎖那么他們肯定是先A后B,那么我如果不加是不是操作系統(tǒng)調(diào)度他們的幾率是一樣的只不過是出現(xiàn)的是隨機(jī)的,因?yàn)榫€程的優(yōu)先級和調(diào)度權(quán)重是一樣的!看似是一個(gè)簡單的問題,但卻要你有很扎實(shí)的c語言編程能力和豐富的操作系統(tǒng)知識!好的!問題就回答到這里如果喜歡我的回答請關(guān)注”嘿咪編程專家”,后續(xù)會有更多精彩的回答與大家分享!有疑問隨時(shí)可私信或留言我會第一時(shí)間回復(fù)大家謝謝!