ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

ExcelのRand関数、RandBetween関数はあまり精度がよくないので、メルセンヌツイスターを利用した乱数精製器を使えと、よく言われます。

なんとなく、悪いのだろうな(というよりそれほど重要視していないだろう)という認識はありますが、実際どの程度悪くて、どんなレベルになら利用しても差し支えなくて、どんな状況下では使ってはいけないのか、線引きをするため(と統計学の手法を勉強したいこともあって)自分で検証してみようかと考えています。
なるべくExcelだけですむようにと考えています。

そこで質問です。
(1)まず、データの個数は30万個にしました(うちのPCで操作できる限界がこの辺でしたので)
(2)A1~J30000までに「randbetween(1,300000)」という関数を入力し、30万個のセルに1~300000(30万個)のデータを入力しました。
(3)さらにL1にcountif($A$1:$J$30000,(1))と入力し((1)の部分は1~300000)出現数をカウントしました。

ここまでやってみてぱっと見で意外とダブっているなと認識したのですが、これを統計的にどの程度ばらついていないのか、を議論するにはどうすればいいでしょうか?

標準偏差はバラつきを示す指標のひとつですが、完全にばらついた(ユニークである事)を示す指標に使うと意味がわからないです。
とはいえ、これほどのデータだとグラフを書くのも不可能(エクセルのグラフ機能は使用できるデータの個数が限られています)。
どうやって見ればいいのかと、とまってしまっています。


前提条件から覆してこういう見方をするべきだ、という意見も大歓迎です。
ご教授のほど、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (9件)

こんばんは。



本来、RAND 関数で、自然乱数ではなく擬似乱数(pseudo-random numbers)ですが、日本語サイトの情報では、あまり正確な情報が出ていないようです。

そこで、RANDOM について、旧バージョンと比較して、Excel 2003/2007 (2003には、バグが残っています)が、一応、100万回以上を試さない限りは、乱数は保証できると言っています。

Excel 2007 と Excel 2003 の RAND 関数について
http://support.microsoft.com/kb/828795/ja

いろいろ探してみましたが、以下の論文が一番、話の内容が納得できるようです。
英文資料です。

http://www.daheiser.info/excel/frontpage.html
XVIII. Random Number Generation (update, 12/10/08) 
pdf 資料(私は、30P の内、半分程度しか読んでいません。)

そこに、RANDBETWEEN の説明も書かれていますが、RAND()関数と独立して検査は出来ないけれども、特に問題も見出せなかったとされています。

>とはいえ、これほどのデータだとグラフを書くのも不可能(エクセルのグラフ機能は使用できるデータの個数が限られています)。

それは、大雑把に見るのでしたら、散布図の形を見れば良いのではないでしょうか。それで、X,Y で期待する四角形(30万,30万)で概ね塗りつぶせれば、偏りが少ないだろうし、形やムラが出来れば、偏りがあるのだと判定できるはずです。
    • good
    • 1
この回答へのお礼

配布リンク先のPDFについては後ほど見るとして、Microsoftの見解は一つの閾値として使えそうです。

うちで使っているのはOffice2000なので、精度の悪い(とされる)Excelのようです。ただ、それでも100万個以上・・・ということですから。
まぁよほどの事がない限り問題にはならないでしょうね。

問題になりえる使い方も、イメージがわきました。検証云々は別途考えるとして、目的の一つである「どういう時には利用すべきでないか」が明確になり、スッキリしました。

お礼日時:2009/05/27 12:53

補足:



Excel用の説明としては、こちらが分かりやすいかと思います。
MTは、日本人が考えたもので、海外のものよりも優れているのですね。今回は、いろいろ勉強させられました。

良い乱数・悪い乱数
http://www001.upp.so-net.ne.jp/isaku/rand.html
ここに、
「このページの目的は、従来の乱数の問題点を指摘し、すばらしい乱数、 「メルセンヌツイスタ」 の普及を促進することである。」

ということが書かれています。

乱数ライブラリ

http://www001.upp.so-net.ne.jp/isaku/rand2.html

sfmt.zip : ライブラリ一式 (ただし、その前の[zmtrand.zip : ライブラリ本体一式]も入れてください。)こちらは、SFMT があり、Excel用のサンプルも揃っています。
この検査は、1億回調べて、時間を計ります。

仕事では、この中から、ひとつを使えばよいと思います。
    • good
    • 0

こんにちは。


返事をつけるのが遅くなりました。

>どのように評価するのかについては

いくつか調べてみましたが、評価は、ヒストグラムでできます。
Excel2000 で試してみました。

エクセルを用いた標準正規分布に従う乱数(正規乱数)の発生とヒストグラム
http://homepage1.nifty.com/gfk/Norm-Rand.htm

ヒストグラムの取り方は、手作業でも構わないと思いますが、分析ツールがアドインでありますから、そちらを使ってできます。技術関係の方でしたら、お分かりになるかと思います。ヒストグラムの作り方は、上限と下限の区分さえ決めてあげれば、できるはずですから、そこで分布を見ればよいと思います。

それと、Excel2000 ですから、OSは、少なくとも Vista ではありませんから、以下のツールが使えるかと思います。ソースもありますから、コンパイルしてもよいかとは思います。Excel2000では、良い方法が見つけられませんでした。

Mersenne Twister DLL版
http://www.vector.co.jp/soft/win95/prog/se227612 …
解説
http://hp.vector.co.jp/authors/VA020429/mt.html

Cでコンパイルされたものですから、C:\Windows など、Path の通った、例えば、\System32の中にでも入れてあげればよいと思います。スピードも多少は遅いのですが、VBAよりは格段に速いです。VBAの中からワークシートに値を出します。

それで、正規分布 NORMDIST で、上記のMTの中の、genrand_real2で、グラフ化を試してみましたが、キレイな正規分布図が取れました。RAND()関数では、そこまでは、正規分布図は取れないように思います。

なお、RANDOM 関数を、RandBetween に直す方法は、
Int((最大値 - 最小値 + 1) * [ランダム関数] + 最小値)

とします。
    • good
    • 0

擬似乱数の統計的な検定なら、エクセルのサイトではありませんが、


http://www.geocities.jp/m_hiroi/light/pystat04.h …

エクセルにカイ2乗検定の関数があるので、エクセルで統計的な検定について説明したサイトも探せばあるでしょう。
よく例に挙げられるのがサイコロの出目ですね。
サイコロは6面ですが、1~30万の乱数なら30万面のサイコロ(!)だと考えれば、分かりやすいかもしれません。

30万個のデータだとかなり重そうなので、1~1000の乱数を1万個作ってやってみました。
A1:A10000=RANDBETWEEN(1,1000)
B1:B1000=COUNTIF(A:A,ROW())
C1:C1000=10(を入力 理論的には1~1000の数字が10個ずつ出るので)
有意水準 5% で検定を行うとすれば、
=CHITEST(B1:B1000,C1:C1000)
の値が、0.05以上ならOKとなります。
(余裕でOKでした)

今度は1~6万の乱数をA1:A60000に作ってみました。
集計結果↓
出現回数,,個数,,期待値
0,,,,,,,22038,,,22072.58
1,,,,,,,22149,,,22072.95
2,,,,,,,10973,,,11036.48
3,,,,,,,,3684,,,3678.76
4,,,,,,,,966,,,,,919.66
5,,,,,,,,155,,,,,183.92
6,,,,,,,,,31,,,,,,30.65
7,,,,,,,,,,4,,,,,,,4.38
8以上,,,,,,0,,,,,,,0.61
期待値の算出は、よく分からないけど、
=BINOMDIST(出現回数,60000,1/60000,FALSE)*60000
で良いと思う。
出現0回が2万個もあって、最初はおかしいのかなと思ったが、ほぼ期待値通り。
実測個数と期待値でカイ2乗検定したら、これもOKでした。


> 2回出現する数値が数個程度かと思いきや、6回出現する数値が10個近く現れた

↑というようなことは、無いと思うのですが。
    • good
    • 0

#2です。

お礼でおっしゃるとおりです。
>メルセンヌツイスターを利用した
も判りません。
しかしこの質問コーナーではカテゴリを適当に選んで質問すべきだとは思います。エクセルは色んな分野で(それも主に計算用だけに)使われるので、その背後にはその分野特有の知識があって使う場合があり、2割ぐらいエクセルに関連があっても、数学コーナーで応えられるような人は、エクセルのことも合わせて応えられるはずだと思いました。
その背後にはその分野特有の必要知識があり、それがあると期待される読者のカテに質問されるのがベターと思います。
私は8年ぐらい多数のこのコーナーにお質問を見てきました。
経験則からいっている部分もあります。質問をする方としては、きつい表現と思いましたが。
    • good
    • 0
この回答へのお礼

おっしゃるとおり、ここでは最もほしかった答え、どの程度のレベルにならRand関数を使っても問題なさそうかが解決しましたが、
そこから先の、どのように評価するのかについては別に調べた方がいいということは分かりました。

あなたの言い方に正直なところカチンときてしまいましたが、適切な場所に、という点は納得しています。


あおるような返事をしてしまったことをお詫びします。
回等ありがとうございました。

お礼日時:2009/05/27 17:40

こんにちは。


>うちで使っているのはOffice2000なので

そうしたら、メルセンヌツイスタ法の解決は最終手段にしてください。理由は、遅いからです。乱数生成は、セキュリティに直接関わってくる問題ですから、別に、誰かに聞かれたからというよりも、きちんと認識しておく必要はあるように思います。

上記のメ法の前に解決手段がいくつか英文の中で読んだのですが、まさか、Excel 2000だと思わなかったので、2003以降の英文しか読んでいません。もう一度英語論文等で、Excel 2000 の部分を読んでみます。締めないで、少し、時間をください。単純なVBAでも解決したような気がします。
    • good
    • 0

修正


Excel 2003/2007 [(2003には、バグが残っています)]
2003 の修正はPack1 にして、直っているそうです。

メルセンヌツイスタ法を使う必要があるかは、統計を取ってみないとはっきりしないかもしれませんが、使う用途によって決まってくるのではないでしょうか。なお、統計を取るには、Frequency 関数を使うのが一般的ですが、同関数は、配列を使いますから、数が多いと負担が大きいので、その代わりに、VBAで、同様の関数を作ったほうが良いかもしれません。
    • good
    • 0

#3の修正


#[形や]ムラが出来れば、偏りがあるのだと判定できるはずです。
形が四角形にならなかったり、・・・・
    • good
    • 0

回答にはなりませんが……



エクセルの乱数は、単一使用を前提に作られています。ほかのセルの結果にかかわらず、各セル単独で乱数が作られます。ですので、同一値が出ることは当然あります。

それでも15桁(セル内では9桁表示)の乱数ですから、何千、何万という範囲なら、重複の可能性はかなり低いので、日常使用には支障はないと思います。どうしても重複が許せないのなら、マクロを使うのがいいでしょう。
    • good
    • 0
この回答へのお礼

>エクセルの乱数は、単一使用を前提に作られています。ほかのセルの結果にかかわらず、各セル単独で乱数が作られます。ですので、同一値が出ることは当然あります。
はい、承知の上です。
ですが、それでもぱっと見て(Rank関数で出現数を取り出したところ)思った以上に重複があったもので(2回出現する数値が数個程度かと思いきや、6回出現する数値が10個近く現れたものですから)、何か視覚化できないかと思いました。

まぁ本来はVBAを使用しなければいけないのでしょうが、それを利用に至る閾値が、自分自身の中でほしいので検証できないものかと思っています。

お礼日時:2009/05/27 12:38

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q発生乱数の偏りを無くしたい

エクセルで=RAND()を用いてA1~A100のセルに100個乱数を発生させたときに(乱数は0~1の幅)、0~1の値を偏り無く発生させることは可能でしょうか??

発生した100個の乱数をコピーして形式を“値”にして貼り付けてその100個の乱数の平均や中央値をみてみると0.5にはならないことから疑問に思いました・・・。

ご存知の方アドバイスよろしくお願いします。

Aベストアンサー

こんにちは

面白い疑問だなと思ったので試してみました。
A1に=Rand()を入れてA1000までコピーしました。
B1に=Average($A$1,A1)と入れてB1000までコピーしました。
これで平均値の途中経過もわかるようになります。
A1からB1000までを選んで折れ線グラフを作成し、何度か再計算をすると
乱数の振れ巾や平均値の移動の様子がわかります。
1000個の数字でも平均値で0.45~0.55くらいの振れは出るんですね。
これは0.1未満の数値も出てしまうからだと思いましたので、
乱数の範囲を0.1~0.9に絞ると平均値のぶれはとても小さくなりました。
このときの式は=Rand()*(0.9-0.1)+0.1としてやればいいです。
0.01~1.00が欲しければ=Rand()*(1-0.01)+0.01とすればいいです。

Qエクセル指定した範囲からランダムで一つ抽出

エクセルの関数についての質問なのですが、

B1~B5に値がならんでいたとして、B1~B5の中からランダムに一つ抽出したものをA3に表示する関数はありますか?

Aベストアンサー

A3に次の式を入力すればよいでしょう。

=INDEX(B1:B5,RANDBETWEEN(1,5))

Q統計学的に信頼できるサンプル数って?

統計の「と」の字も理解していない者ですが、
よく「統計学的に信頼できるサンプル数」っていいますよね。

あれって「この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる」という決まりがあるものなのでしょうか?
また、その標本数はどのように算定され、どのような評価基準をもって客観的に信頼できると判断できるのでしょうか?
たとえば、99人の専門家が信頼できると言い、1人がまだこの数では信頼できないと言った場合は信頼できるサンプル数と言えるのでしょうか?

わかりやすく教えていただけると幸いです。

Aベストアンサー

> この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる・・・
 調べたいどの集団でも、ある一定数以上なら信頼できるというような決まりはありません。
 何かサンプルを集め、それをなんかの傾向があるかどうかという仮説を検証するために統計学的検定を行って、仮設が否定されるかされないかを調べる中で、どの検定方法を使うかで、最低限必要なサンプル数というのはあります。また、集めたサンプルを何か基準とすべき別のサンプルと比べる検定して、基準のサンプルと統計上差を出すに必要なサンプル数は、比べる検定手法により計算できるものもあります。
 最低限必要なサンプル数ということでは、例えば、ある集団から、ある条件で抽出したサンプルと、条件付けをしないで抽出したサンプル(比べるための基準となるサンプル)を比較するときに、そのサンプルの分布が正規分布(正規分布解説:身長を5cmきざみでグループ分けし、低いグループから順に並べたときに、日本人男子の身長なら170cm前後のグループの人数が最も多く、それよりも高い人のグループと低い人のグループの人数は、170cmのグループから離れるほど人数が減ってくるような集団の分布様式)でない分布形態で、しかし分布の形は双方とも同じような場合「Wilcoxon符号順位検定」という検定手法で検定することができますが、この検定手法は、サンプルデータに同じ値を含まずに最低6つのサンプル数が必要になります。それ以下では、いくらデータに差があるように見えても検定で差を検出できません。
 また、統計上差を出すのに必要なサンプル数の例では、A国とB国のそれぞれの成人男子の身長サンプルがともに正規分布、または正規分布と仮定した場合に「t検定」という検定手法で検定することができますが、このときにはその分布を差がないのにあると間違える確率と、差があるのにないと間違える確率の許容値を自分で決めた上で、そのサンプルの分布の値のばらつき具合から、計算して求めることができます。ただし、その計算は、現実に集めたそれぞれのサンプル間で生じた平均値の差や分布のばらつき具合(分散値)、どのくらいの程度で判定を間違える可能性がどこまで許されるかなどの条件から、サンプル間で差があると認められるために必要なサンプル数ですから、まったく同じデータを集めた場合でない限り、計算上算出された(差を出すために)必要なサンプル数だけサンプルデータを集めれば、差があると判定されます(すなわち、サンプルを無制限に集めることができれば、だいたい差が出るという判定となる)。よって、集めるサンプルの種類により、計算上出された(差を出すために)必要なサンプル数が現実的に妥当なものか、そうでないのかを、最終的には人間が判断することになります。

 具体的に例示してみましょう。
 ある集団からランダムに集めたデータが15,12,18,12,22,13,21,12,17,15,19、もう一方のデータが22,21,25,24,24,18,18,26,21,27,25としましょう。一見すると後者のほうが値が大きく、前者と差があるように見えます。そこで、差を検定するために、t検定を行います。結果として計算上差があり、前者と後者は計算上差がないのにあると間違えて判断する可能性の許容値(有意確率)何%の確率で差があるといえます。常識的に考えても、これだけのサンプル数で差があると計算されたのだから、差があると判断しても差し支えないだろうと判断できます。
 ちなみにこの場合の差が出るための必要サンプル数は、有意確率5%、検出力0.8とした場合に5.7299、つまりそれぞれの集団で6つ以上サンプルを集めれば、差を出せるのです。一方、サンプルが、15,12,18,12,21,20,21,25,24,19の集団と、22,21125,24,24,15,12,18,12,22の集団ではどうでしょう。有意確率5%で差があるとはいえない結果になります。この場合に、このサンプルの分布様式で拾い出して差を出すために必要なサンプル数は551.33となり、552個もサンプルを抽出しないと差が出ないことになります。この計算上の必要サンプル数がこのくらい調査しないといけないものならば、必要サンプル数以上のサンプルを集めて調べなければなりませんし、これだけの数を集める必要がない、もしくは集めることが困難な場合は差があるとはいえないという判断をすることになるかと思います。

 一方、支持率調査や視聴率調査などの場合、比べるべき基準の対象がありません。その場合は、サンプル数が少ないレベルで予備調査を行い、さらにもう少しサンプル数を増やして予備調査を行いを何回か繰り返し、それぞれの調査でサンプルの分布形やその他検討するべき指数を計算し、これ以上集計をとってもデータのばらつきや変化が許容範囲(小数点何桁レベルの誤差)に納まるようなサンプル数を算出していると考えます。テレビ視聴率調査は関東では300件のサンプル数程度と聞いていますが、調査会社ではサンプルのとり方がなるべく関東在住の家庭構成と年齢層、性別などの割合が同じになるように、また、サンプルをとる地域の人口分布が同じ割合になるようにサンプル抽出条件を整えた上で、ランダムに抽出しているため、数千万人いる関東の本当の視聴率を割合反映して出しているそうです。これはすでに必要サンプル数の割り出し方がノウハウとして知られていますが、未知の調査項目では必要サンプル数を導き出すためには試行錯誤で適切と判断できる数をひたすら調査するしかないかと思います。

> どのような評価基準をもって客観的に信頼できると判断・・・
 例えば、工場で作られるネジの直径などは、まったくばらつきなくぴったり想定した直径のネジを作ることはきわめて困難です。多少の大きさのばらつきが生じてしまいます。1mm違っても規格外品となります。工場では企画外品をなるべく出さないように、統計を取って、ネジの直径のばらつき具合を調べ、製造工程をチェックして、不良品の出る確率を下げようとします。しかし、製品をすべて調べるわけにはいきません。そこで、調べるのに最低限必要なサンプル数を調査と計算を重ねてチェックしていきます。
 一方、農場で生産されたネギの直径は、1mmくらいの差ならほぼ同じロットとして扱われます。また、農産物は年や品種の違いにより生育に差が出やすく、そもそも規格はネジに比べて相当ばらつき具合の許容範囲が広くなっています。ネジに対してネギのような検査を行っていたのでは信頼性が損なわれます。
 そもそも、統計学的検定は客観的判断基準の一指針ではあっても絶対的な評価になりません。あくまでも最終的に判断するのは人間であって、それも、サンプルの質や検証する精度によって、必要サンプルは変わるのです。

 あと、お礼の欄にあった専門家:統計学者とありましたが、統計学者が指摘できるのはあくまでもそのサンプルに対して適切な検定を使って正しい計算を行ったかだけで、たとえ適切な検定手法で導き出された結果であっても、それが妥当か否か判断することは難しいと思います。そのサンプルが、何を示し、何を解き明かし、何に利用されるかで信頼度は変化するからです。
 ただ、経験則上指標的なものはあります。正規分布を示すサンプルなら、20~30のサンプル数があれば検定上差し支えない(それ以下でも問題ない場合もある)とか、正規分布でないサンプルは最低6~8のサンプル数が必要とか、厳密さを要求される調査であれば50くらいのサンプル数が必要であろうとかです。でも、あくまでも指標です。

> この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる・・・
 調べたいどの集団でも、ある一定数以上なら信頼できるというような決まりはありません。
 何かサンプルを集め、それをなんかの傾向があるかどうかという仮説を検証するために統計学的検定を行って、仮設が否定されるかされないかを調べる中で、どの検定方法を使うかで、最低限必要なサンプル数というのはあります。また、集めたサンプルを何か基準とすべき別のサンプルと比べる検定して、基準のサンプルと統計上差を出すに必要な...続きを読む

QExcelで事前にセルに入力した言葉をランダムに表示

例えばA1に「いぬ」 A2に「ねこ」 A3に「ぞう」 A4に「たぬき」 A5に「きつね」と入力します
次に
B1~B10に 「いぬ」「ねこ」「ぞう」「たぬき」「きつね」のいずれかを自動にランダムに表示する方法を教えてください
こんな便利な機能があれば良いと思うのですが・・・

Aベストアンサー

=INDIRECT("A"&INT(RAND()/0.2)+1)

INT(RAND()/0.2)+1 で1~5までの整数が得られます。
INT(RAND()/0.1)+1 で1~10までの整数が得られます。
INT(RAND()/0.02)+1 で1~50までの整数が得られます。
INT(RAND()/0.01)+1 で1~100までの整数が得られます。

それでA1からA5、A1からA10、A1~A50、A1~A100のセルの内容を取得しています。A2からなら+2にしてください。
F9キーを押すたびに再計算されて、表示も変わります。

Qエクセル関数を使って、ランダム抽出をしたいです

エクセル関数を使って、ランダム抽出をしたいのですが
どの関数を使用すればいいのかわからないのです。

現在、1つのシートにいろいろなデータが入っているのですが、
D列のデータを使い、そのデータをランダムに25件抽出したいのです。

よろしくお願い致します。

Aベストアンサー

Sheet1にデータが入っているとして、そのD列のデータをSheet2のA列に取り出して操作をすることにします。
関数で取り出すのでしたらSheet2のA1セルに次の式を入力し下方にオートフィルドラッグします。
=Sheet1!D1
B1セルには次の式を入力し下方にオートフィルドラッグします。
=IF(A1="","",RAND())
C1セルには次の式を入力し下方にオートフィルドラッグします。
=IF(A1="","",RANK(B1,B:B))
D1セルには次の式を入力し下方にオートフィルドラッグします。
=IF(OR(COUNTIF(C:C,ROW(A1))=0,ROW(A1)>25),"",INDIRECT("A"&MATCH(ROW(A1),C:C,0)))
これでSheet2のD列にはランダムに抽出されたデータが並ぶことになります。
なお、F9のキーを押すことで抽出操作を繰り返すことができます。

Q目処(めど)と目途(もくと)

目処と目途の使い分けについて教えてください。
送り仮名に違いがありますか。
PC辞書で「めど」の変換を探すと目途が入っているのもありますね。
これは明らかに誤用ですよね。

Aベストアンサー

めどはやまと言葉ではないでしょうか。もしそうなら漢字は当て字であり、どちらが正しいというものでもなく、世間で一般的にどう使い分けされているかということに過ぎないと思います。

広辞苑ではめど(目処)もくと(目途)と分けて記載されているだけで説明がなく
不親切です。朝日新聞社の漢字用語辞典では、めど(目処、目途)とあり、私のPCでも、めどで両方が転換できます。

解決のめどがつくとか、目標達成のめどが立ったなどと使われるので、
ものごとがその完成、実現にちかずいたということを意味し、目標とは若干ニュアンスが異なると思います。目標は高くとは言いますが、目途(目処)は高くとはいいませんね(この部分は蛇足です)

Q「=RANDBETWEEN」で、同じ数字を出さないようにしたいのですが。

「Excel2003」を使用しています。

B1のセルに「=RANDBETWEEN(A1,A2)」
と入れて、ランダムな数字を出すように
しているのですが…
1度出た数字を、A2に入れた最大値の再計算回数を
超えるまでは、2度と出ないようにするという方法は
あるでしょうか?

つまり、最小値が「1」で最大値が「10」の場合、
10回再計算した場合、全て違う数字が出るように
したいのです。
(11回目からは当然重複してくるわけですが…)

マクロではなく、出来れば関数で
なんとかしたいのですが…
宜しくお願い致します。

Aベストアンサー

エクセルの関数の質問で、永らく回答が入らないのはめづらしいですね。難しい問題なのでしょう。
私には回答は判りません。後の方の批判を待ちます。
しかし、
RANDBERWEEN関数は、無関係のセルでも演算が行われるごとに、再計算されて、値が変ります。
ですから、同じ数があるかどうかの判別が難しいです。
多分(この問題自体が)不可能ではないかと問題提起します。
それと一旦出た乱数を、過去に同一数があるなどの条件によって、別数にしてしまうことは、厳密な意味で、乱数性を損なうのではと思いました。乱数性とは何か?私には
難しいですが。
これは数学理論と係わると思いますので、OKWEBコンピュタ
カテでは(今までの経験から)答えは頂けないだろうと思いますが。
------
便法として
1-12の順序がバラバラの数(順序数)を得たいとき、私は下記はどうかと思いました。
A1:A12にオートフィルで1、2、3、・・、12をいれる。
B列にB1に=RANDBETWEEN(10000,20000)といれる。
10000,20000は、まず同じ数字が発生しないであろうところの、1-12に比べて、圧倒的に大きい幅で指定する。
B12まで式を複写。
「編集」「形式を選択して貼りつけ」「値」で同一セルに複写して、B列の数を値化する(関数式を消す)。
A1:B12を範囲指定して、B列でソートする。
(結果)
319895
1017183
818943
110195
419274
715500
213502
516248
1114329
1216199
911100
617877
このA列の3、10、8・・・を求めるものとして使う。

エクセルの関数の質問で、永らく回答が入らないのはめづらしいですね。難しい問題なのでしょう。
私には回答は判りません。後の方の批判を待ちます。
しかし、
RANDBERWEEN関数は、無関係のセルでも演算が行われるごとに、再計算されて、値が変ります。
ですから、同じ数があるかどうかの判別が難しいです。
多分(この問題自体が)不可能ではないかと問題提起します。
それと一旦出た乱数を、過去に同一数があるなどの条件によって、別数にしてしまうことは、厳密な意味で、乱数性を損なうのではと思いまし...続きを読む

Qエクセル STDEVとSTDEVPの違い

エクセルの統計関数で標準偏差を求める時、STDEVとSTDEVPがあります。両者の違いが良くわかりません。
宜しかったら、恐縮ですが、以下の具体例で、『噛み砕いて』教えて下さい。
(例)
セルA1~A13に1~13の数字を入力、平均値=7、STDEVでは3.89444、STDEVPでは3.741657となります。
また、平均値7と各数字の差を取り、それを2乗し、総和を取る(182)、これをデータの個数13で割る(14)、この平方根を取ると3.741657となります。
では、STDEVとSTDEVPの違いは何なのでしょうか?統計のことは疎く、お手数ですが、サルにもわかるようご教授頂きたく、お願い致します。

Aベストアンサー

データが母集団そのものからとったか、標本データかで違います。また母集団そのものだったとしても(例えばクラス全員というような)、その背景にさらならる母集団(例えば学年全体)を想定して比較するような時もありますので、その場合は標本となります。
で標本データの時はSTDEVを使って、母集団の時はSTDEVPをつかうことになります。
公式の違いは分母がn-1(STDEV)かn(STDEVP)かの違いしかありません。まぁ感覚的に理解するなら、分母がn-1になるということはそれだけ結果が大きくなるわけで、つまりそれだけのりしろを多くもって推測に当たるというようなことになります。
AとBの違いがあるかないかという推測をする時、通常は標本同士の検証になるわけですので、偏差を余裕をもってわざとちょっと大きめに見るということで、それだけ確証の度合いを上げるというわけです。

Q±4σに入る確率について教えてください

ウィキペディアの検索より、
確率変数XがN( μ, σ2)に従う時、平均 μ からのずれがσ以下の範囲にXが含まれる確率は68.26%、2σ以下だと95.44%、さらに3σだと99.74%となる。
と分かりました。

そこで
4σ、


の場合確率はどうなるか教えてください。
よろしくお願い致します。

Aベストアンサー

Excel で NORMDIST を使い、平均 50、標準偏差 10 (いわゆる偏差値)で計算してみましたら、次のようになりました。

 σ 0.682689492137086
2σ 0.954499736103641
3σ 0.997300203936740
4σ 0.999936657516326
5σ 0.999999426696856
6σ 0.999999998026825
7σ 0.999999999997440
8σ 0.999999999999999
9σ 1.000000000000000

Excelの関数の精度がどの程度のものか分かりませんが、9σで100%になりました。

Qランダム関数で任意の桁数のランダム数字を作りたい

エクセル2000ユーザーです。ランダム関数を使い、重複を許さない5桁のランダム数字を1000個作りたいと思っています。randbetween関数を使おうと思ったのですが、2000では使えないのか、NAMEといったエラー表示がでます。5桁の中は同じ数字がでてきても構いません。例:11295、43634、70676・・・etc。
が、1000個の中では同じ数字が重複しないようにしたいです。

=RIGHT(RAND(),5)

のように考えたのですが、他にいい方法はありますでしょうか?
マクロやVBAは苦手なので、できれば関数でいいやり方があれば教えてください。

Aベストアンサー

=RIGHT(RAND(),5)
だと、末尾に0が連続するようなケースで不正な結果になってしまう可能性があります。
=RIGHT(INT(100000+100000*RAND()),5)
というのはどうでしょうか?
それから、1000/100000なので確率は低いかもしれませんが、重複はありえます。(100個に1個ぐらい)
1100個ぐらい生成して、重複するものは排除してください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング