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