[算表] EXCEL:給定平均求亂數(整數)
→
05/13 02:30,
05/13 02:30
→
05/13 02:30,
05/13 02:30
→
05/13 02:31,
05/13 02:31
→
05/13 02:33,
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,
06/26 17:37
→
06/26 17:38,
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
05/14 00:36, 1F
推
05/14 13:03, , 2F
05/14 13:03, 2F
→
05/15 05:49, , 3F
05/15 05:49, 3F
※ 編輯: JieJuen 來自: 218.164.51.73 (11/07 22:32)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):