[問題] 平均的亂數產生數字個數 C++[新問題]

看板C_and_CPP作者 (Terry)時間13年前 (2012/04/27 14:29), 編輯推噓1(1021)
留言22則, 6人參與, 最新討論串1/7 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 請教一下 我先說明一下我的問題 我現在有3個數字亂數產生 最少產生1個,最多產生3個 EX: 1+rand()%(3); 然後我平均亂數產生的數字要是這三個數字的平均 也就是說 1+rand()%(3); 可能產生的數字有1,2,3 平均就是(1+2+3)/3 = 2 那我平均亂數產生的數字長期平均下來要是2 然後這個平均可能會是變動的 例如說,我可能會乘上0.9, 0.8, 0.7...之類的 假如(1+2+3)/3 = 2,我乘上0.8之後,變成了1.6 那我產生的亂數長期平均下來也要是1.6 不知道各位前輩有沒有什麼想法 我目前沒有辦法做到這個樣子 只能做到 我不用亂數產生 我每次的輸入都是2 然後如果要滿足1.6的話 ex:「(1+2+3)/3 = 2,我乘上0.8之後,變成了1.6」 就是用亂數機率的方法,有10分之6的機率會是2,另外10分之4的機率會是1 例如產生出來可能會是這個樣子: 2 2 2 2 2 2 1 1 1 1 這樣子平均就是1.6了 但是這也只是兩個數字2和1的組合而已 不知道如果用3個數字要如何達成... 希望前輩們提供一些想法 如果有說明不清楚的地方我再補充 謝謝 == 方法有想到了,我先測試看看 到時後再說明 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.136.149.125

04/27 22:38, , 1F

04/27 22:41, , 2F
配置空間 catch填滿 效率我不知道
04/27 22:41, 2F

04/27 22:41, , 3F
謝謝您,我研究一下
04/27 22:41, 3F

04/27 22:41, , 4F
不過E大,我剛才跑了一下,似乎還是會超過
04/27 22:41, 4F

04/27 22:42, , 5F
感覺比較有效率一些,我在想一下如何不超過..
04/27 22:42, 5F

04/27 22:43, , 6F
何謂「超過」?
04/27 22:43, 6F
就是說 如果我要產生100個,那每個數字就會出現25次(100/4 =25) 那如果產生的數字為26次或以上,那就是超過了

04/27 22:44, , 7F
oh,在第一個for loop 裡面直接做 if(freq[rnd-LOW]>xxxx)
04/27 22:44, 7F

04/27 22:44, , 8F
break; 應就是你要的了。
04/27 22:44, 8F
謝謝您,我試試看 ※ 編輯: bernachom 來自: 140.136.149.125 (04/27 22:45)

04/27 22:50, , 9F
加了之後好像還是沒有辦法不超過,我先回家,回家再試..
04/27 22:50, 9F

04/27 22:50, , 10F
謝謝了
04/27 22:50, 10F

04/27 23:08, , 11F

04/27 23:12, , 12F
先把數字放到4個籃子裡,再一一拿出來。拿完的籃子丟掉。
04/27 23:12, 12F

04/28 00:03, , 13F
謝謝您,我看一下,好有趣的想法。
04/28 00:03, 13F

04/28 01:05, , 14F
直接宣告一個ARRAY SIZE = 你要產生的個數
04/28 01:05, 14F

04/28 01:06, , 15F
然後把1 2 3 4 填進去 再對每個元素作隨機交換
04/28 01:06, 15F

04/28 01:07, , 16F
假設SIZE = 100 直接填入25個1 25個2 25個3 25個4做交換
04/28 01:07, 16F

04/28 01:11, , 17F
謝謝您,我想一下
04/28 01:11, 17F
※ 編輯: bernachom 來自: 114.42.105.241 (04/28 03:19)

04/28 04:22, , 18F
C++有random_shuffle
04/28 04:22, 18F

04/28 04:31, , 19F

04/28 04:31, , 20F
每4個不會重複的寫法
04/28 04:31, 20F
※ 編輯: bernachom 來自: 114.42.118.109 (04/29 01:31) ※ 編輯: bernachom 來自: 114.42.118.109 (04/29 02:43)

04/29 02:53, , 21F
考慮均勻結果的話,辦不到。但確實有方法可指定<不很勻>
04/29 02:53, 21F

04/29 03:13, , 22F
好像真的是像E大您說的...冏
04/29 03:13, 22F
文章代碼(AID): #1Fcgqyud (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Fcgqyud (C_and_CPP)