如何用 C 語言寫出概率絕對相同的骰子程式?

時間 2021-05-12 02:56:14

1樓:Cosmia Fu

生成的頻率絕對一致事實上已經確定了這個不可能是乙個隨機過程

所以思路如下,產生乙個結果池(result pool),讓不同結果的數目相同,然後每次隨機pop乙個結果作為返回值,這樣可以保證在執行了pool_size次之後頻率嚴格相等,不過再強調一次,這已經不是隨機了。

而保證頻率絕對一致事實上觀察者可以通過之前的實驗結果來預測下一次實驗結果,假設樣本是600次,那麼事實上第599次實驗之後,第600次實驗的結果已經是確定的了。

2樓:邱昊宇

最根本的是:擲骰子的次數越大,越接近六分之一。但 100000000 足夠大嗎?

不過程式本身也有問題:對於 srand() 函式,可以理解為根據種子建立乙個隨機數列,而 rand() 只是依次從這個數列裡取數字而已。題目中每次 rand() 之後都重新 srand(),不但會讓程式執行變慢,還會直接影響結果。

隨機數列內部是均勻的,但是沒人說隨機數列之間是均勻的呀。

當然題目裡對於 32765 和 RAND_MAX 之間的糾結確實挺糾結的。即便撇去 srand() 的問題,這種特殊處理應該也會影響隨機性……吧(望天)可以考慮換用 begin + (int)((long long)rand() * (end - begin) / (RAND_MAX + 1L)) 得到 [begin, end) 間的隨機數……

最管用的還是增大擲骰子的次數,比如你可以試試 INT_MAX 次……(先把中間的 srand() 去掉,否則等到天荒地老……)

如何用C語言程式設計計算 1! 2! 3! 10!?

朕乃明帝 include int main int temp 1,sum 0,i for i 1 i 10 i temp temp i sum temp printf d sum return 0 ageer 一次for迴圈即可,乙個變數存當前階乘結果,乙個變數存歷史階乘累加值。int JieChe...

如何用 C 語言畫 心形 ?

冷眸 include int main putchar n 要是想要知道更多的可以去 前途 前途 裡面找,有教各種知識,還有很多大佬可以一起學習 滄海一聲笑 你們這都太屌了,看我給你們來乙個簡單粗暴的 int main ycz emmm,今天是情人節,其實已經有計畫要實現這個問題許久了,一直沒有時間...

如何用 C 語言解這個式子的最小值?

手算可以發現abc裡面有且僅有乙個1 defg裡面最多有乙個1,而且de和a繫結 fg和b繫結。那麼可以認為這裡有兩個變數 乙個abc取值為0 2 乙個df eg取值為0 1 接下來看另一頭,jkl和abc是相似的結構,ehgi和defg也是相似的結構,特殊之處在於e和g重複出現了。如果e或g是1的...