[算表] EXCEL:給定平均求亂數(整數)

看板Office作者 (David)時間17年前 (2008/05/14 00:33), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/2 (看更多)

05/13 02:30,
A1=ROUND(C1+RAND()*(ABS(ABS(3-C1)-2)),0)
05/13 02:30

05/13 02:30,
B1=C1*2-A1
05/13 02:30

05/13 02:31,
有人可以幫我檢驗這樣ok嗎
05/13 02:31

05/13 02:33,
這樣的話是設定a取較大的值
05/13 02:33
我想您可能想看看這樣取出的亂數是否平均吧? 以範圍來說,應該是沒問題了 假如所要的平均是2.5 用人腦思考的話 大的那個數(A1)是3或4 A欄平均為3.5 (B欄為1.5) 以上是否正確? 因rand為0~1, ROUND(2.5+0~1*1.5)=ROUND(2.5~4) 範圍2.5~4,2/3機率會是3,1/3會是4 A欄平均約3.33 =ROUND(C1+RAND()*(MOD(C1,1)+ABS(ABS(3-C1)-2)),0) =ROUND(C1+RAND()*(CEILING(ABS(ABS(3-C1)-2),1)),0) 兩式均可使A欄平均為3.5 =ROUND(C1+RAND()*(ROUNDUP(ABS(ABS(3-C1)-2),0)),0) =ROUND(C1+RAND()*(ROUNDUP(ABS(ABS(3-C1)-2),)),0) 意思相同 =================== 後補:Putrid後來發現上式仍有疑問

06/26 17:37,
我發現錯了 只有在c=2.5、3、3.5才會機率不平等
06/26 17:37

06/26 17:38,
而這樣的解法無法解決C=3時的問題 A值還是會1/4 1/2 1/4
06/26 17:38
因此回覆如下 =================== 作者 JieJuen (David) 標題 Re: [算表] EXCEL:給定平均求亂數(整數) 時間 Thu Jun 26 19:38:03 2008 ─────────────────────────────────────── 您好, 很高興您發現了問題,當初雖然檢查了平均值沒問題, 也略有不踏實之感(因為沒有證明),但又沒發現錯誤。 那時是試著由您的式子看能不能改好, 因為覺得您式子下的不錯,我一時間不會用這麼數學的式子 XD 覺得用絕對值的方法不錯! 當初我怎麼解的也忘了(想的有點頭痛 XD) 下面重新解一次,也許您看了可以改您的式子 呵~ 我是一起解的,也就是不分大數和小數 然後,只要定出上下限,找其中的整數即可 寫明白點,即 2*C min max 2 1 1 3 1 2 4 1 3 5 1 4 6 1 5 7 2 5 8 3 5 9 4 5 10 5 5 就算用人填的也好,有這個表就足以解決(也已證明--因這是人依規則寫上)得出之亂數, 既符合範圍,又取得平均。(這是不動腦想式子 只靠excel的解法) 亂數即 =min+INT(RAND()*(max-min+1)) --(1) 相信此式易理解 例如求2~5的亂數 =2+INT(RAND()*4) 只要上式用VLOOKUP取代min與max即可解決 現在進一步,若能用公式產生上表,或許不錯 假設2*C此欄位於K min =1+(K1>6)*(K1-6) max =5+(K1<6)*(K1-6) 亦十分容易, min在6以下都是1,先加個1 超過6之後(K1>6),還要加(K1-6) max同理,在6以上都是5,先加個5 小於6之後(K1<6),也要加(K1-6) 算算max-min+1 =5+((K1<6)-(K1>6))*(K1-6) =5-SIGN(K1-6)*(K1-6) (此式不換無妨) =5-ABS(K1-6) 由於K1其實是2*C1,所以重寫如下 min =1+(2*C1>6)*(2*C1-6) max-min+1 =5-ABS(2*C1-6) 代回(1)式 =min+INT(RAND()*(max-min+1)) =1+(2*C1>6)*(2*C1-6)+INT(RAND()*(5-ABS(2*C1-6))) 完成 http://i.am.ntu.googlepages.com/randInt.xls 上式min部分若要用函數,可用gestep函數(excel 2003需裝增益集,2007可直接用) ※ 引述《fongliao (寒窗苦讀)》之銘言: : 標題: [請問] EXCEL高手 : 時間: Tue May 13 00:40:03 2008 : : ※ [本文轉錄自 ask 看板] : : 作者: fongliao (寒窗苦讀) 看板: ask : 標題: [請問] EXCEL高手 : 時間: Tue May 13 00:38:49 2008 : : ◎問問題 有禮貌 才是乖寶寶 :  若自覺剛剛的標題過長塞不下 此發文選項可不打(按大T修改標題) :  問題描述愈詳盡 得到答案的速度會愈快 :   :  此訊息看完後 請按 CTRL+K 或 CTRL+Y 刪除。 : ============================================================ : : : 我想要在1-5之間產生兩排整數亂數 : : 而且這兩排亂數之平均需等於某個數 : : 例如: : : a b c : 4 5 4.5 : 3 4 3.5 : . . . : . . . : . . . : : : a與b是我想用亂數產生的(必須是整數) : : 而c則是已知的數值 : : 不曉得問版上的好心大大可否指導一下 : : 小的實在是感激不盡阿 orz : : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 218.173.194.137 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 218.173.194.137 : → nike4859:c只有X.5的數值嗎?還是任意整數及小數? 05/13 00:47 : → fongliao:c也是介於1-5,但不限整數,多謝您唷! 05/13 00:50 : → Putrid:A1=ROUND(C1+RAND()*(ABS(ABS(3-C1)-2)),0) 05/13 02:30 : → Putrid:B1=C1*2-A1 05/13 02:30 : → Putrid:有人可以幫我檢驗這樣ok嗎 05/13 02:31 : → Putrid:這樣的話是設定a取較大的值 05/13 02:33 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.38.161

05/14 00:36, , 1F
原題在 5714 #18A7Ba1n
05/14 00:36, 1F

05/14 13:03, , 2F
感謝 :D
05/14 13:03, 2F

05/15 05:49, , 3F
^^
05/15 05:49, 3F
※ 編輯: JieJuen 來自: 218.164.51.73 (11/07 22:32)
文章代碼(AID): #18ASBTDl (Office)
文章代碼(AID): #18ASBTDl (Office)