看板 C_and_CPP 關於我們 聯絡資訊
版上神人真多.... 我覺得我原本的描述應該是有問題的,因為我理解有誤...冏 今天早上我有做出來,跟我原本理解的有落差QQ 所以原本錯誤的問題就不在討論了,因為愈說明會愈多錯誤...T_T =================================================== 我最終的目的,是要滿足亂數request所產生的平均值 意思就是說 如果我是這樣子的亂數產生 1+rand()%(3);//最少是1,最多是3 那平均值就是 (1+2+3)/3 = 2 所以我每次產生的亂數長期平均下來就要是2 但是我的長期平均值是會變動的 我會把亂數乘上0.9, 0.8, 0.7...之類的小數點 做為最後的長期平均值 以上面那個1+rand()%(3)這個為例 這個亂數產生的平均值是2 我乘上0.8之後,就是1.6 那我長期亂數平均下來就要是1.6 我以長期平均是1.6這個為例 因為產生的亂數可能是三種情況之一,可能是1或2或3 三種情況的組合平均為1.6難度有點高 所以我用兩個數字做組合 所以如果連續產生10次亂數 只要達到下面這個樣子 2 2 2 2 2 2 1 1 1 1 前6次是2,後4次是1,平均就是1.6了 我的做法是 為了要達到平均1.6 所以把每次產生的亂數值都乘上0.8 1*0.8=0.8 // 8個1和2個0的組合 2*0.8=1.6 // 6個2和4個1的組合 3*0.8=2.4 // 4個3和6個2的組合 4*0.8=3.2 // 2個4和8個3的組合 每個產生的亂數都是兩個數字的組合 這樣子平均下來就可以達到我想要的平均值了.... 然後我在早上有做出來了 謝謝各位神人的幫忙QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.115.183
LPH66:我覺得你需要一點機率相關的知識.... 05/03 17:53
LPH66:要讓平均值是你想要的數字就要對你產生的亂數分布下手 05/03 17:54
LPH66:而不是去硬調說要讓誰出現幾次 05/03 17:55
bernachom:嗯嗯~~我的那個兩個數字的組合,是有一定的機率才會出現 05/03 17:57
bernachom:的,不是硬調成前幾次是多少,後幾次是多少組合的 05/03 17:57
bernachom:上面那個兩個數字的組合,是說長期平均下來出現次數的 05/03 17:58
LPH66:你有沒有注意到一個問題 原先亂數值域是 {1,2,3,4} 05/03 17:58
bernachom:組合 05/03 17:58
LPH66:這樣調之後變成了 {0,1,2,3,4} 05/03 17:58
bernachom:對呀,我有注意到...可是...我想不出來其它的辦法..冏 05/03 17:59
LPH66:這是你要的嗎? 05/03 17:59
bernachom:只是說,這樣子剛好可以滿足我的平均...Q_Q 05/03 17:59
LPH66:所以我才說你應該要對分布下手而不是硬調 05/03 17:59
bernachom:滿足平均是我要的 05/03 17:59
LPH66:所調對分布下手是去調整 1 有多少機率出現 2 有多少機率出現 05/03 18:00
LPH66:等等等等 使得期望值得到你要的數 05/03 18:00
LPH66:而不是用一個均勻分布去亂調亂算 05/03 18:01
bernachom:完蛋了...這樣子好複雜...我試試看 05/03 18:02
LPH66:這就是機率一開始在探討的東西 所以我才說你需要機率的知識 05/03 18:04
bernachom:那我去查一下相關的東西,我沒修過機率..T_T 05/03 18:04