今、L1からU10の100個セルに、任意の0以上の整数が設定されています。空白セルもあります。
ここに設定されている数を「最大値」と定義します。
(今から紹介するAH1からAQ10までの100個のセルの、1個1個の最大値です)
今、AH1からAQ10までの100個のセルに、「超幾何分布に従う乱数」を発生させます。
・RAND関数はたぶん使えないと思います。(超幾何分布に従ってないと思われるため)
・算出される乱数は、0から最大値までの範囲内にある整数です。
・最大値が投入されていないセルに対しては、乱数を求めないで構いません。
・関数で実現できればそれでもOK!VBAマクロを用いてもOK!
たくさんの質問でごめんなさい☆
どうぞよろしくお願い致します!!
超幾何分布というと構えてしまいますが
二項分布で近似も出来るようです。
系の吟味をして適用できるか検討するのもよいでしょう。
同上のリンクを辿ったもの。
EXCELでの計算ではオーバーフローの恐れがあるので
対数を使って対策する。
http://homepage1.nifty.com/QCC/2002-12.html
Quality Information Service
EXCELでの計算例
プログラミングの例。
以上、見当ハヅレでしたらすいません(;´д`)
超幾何分布の乱数
URLはダミーです
WWWではみあたりませんが、
超幾何分布というのは、
大きさ N の母集団で,特性 A を持つものがM個 とする。この母集団から n 個の標本を取り出したとき,特性 A を持つ標本が x 個であるときの、xの分布
ですから、N,M,nの3つの数字が与えられたときに、乱数xを発生させるのでしょうか?問題にある「最大値」はnにあたるのでしょうか。
蓑谷千鳳彦「すぐに役立つ統計分布」(東京図書)によれば、乱数をとるための式だけ書いてありますが、要約するとシミュレーションをしてしまうようです。
1個のセルについて次の方法(擬似コード)で、乱数xを作成する.
N, Mは与えられていて、セルごとにn(>0)が変わると仮定。
0から1までの間で乱数をとることをn回やって
U[i], i=1,2,...,n に代入。それから
p[1] <- M/N
for i <- 1 to n
if U[i]<p[i]
then d[i] <- 1
else d[i] <- 0
p[i+1] <- ((N-i+1)p[i] - d[i] ) / (N-i)
dsum <- 0
for i <- 1 to n
dsum <- dsum + d[i]
return dsum
dsum が乱数xに相当。d[i]は標本iが特性Aをもつとき1、でなければ0の意味.
もし、n< 0.1 N が満たされていれば2項分布で十分近似できます(上記本)から、それが簡単でしょう。critbinom(n, p, F)を使いますね。p=M/N, Fにはrand0を代入。
ちなみに統計学に関連する質問であれば、
http://aoki2.si.gunma-u.ac.jp/lecture/mb.html
統計学関連のメッセージボード
に聞いてもいいでしょう。
ありがとー☆なんとかできました!
ありがとー!
実はGoogleで私が見つけたページに、ご紹介いただいたものと同じものが・・・。
ひきつづきご回答お待ちします。