
ある条件で、ランダムな数値を作成したいのです。
条件の数値は必ずしも、いつも同じではないのですが、
3つの条件指定をしたいです。
平均値(例えば100)
数値の個数(例えば45)
数値の分布幅(例えば88~107)
上記の条件を指定します。
わかりやすいように、商品の値段と仮定して説明いたしますが、
¥100の商品が45個あれば、平均の値段は当然¥100になります。
ですが、この話の肝なのですが、¥88~¥107までの幅で、ランダムに値段を決め、結果的に平均値が¥100になるようにしたいのです。
このようなことができるのはエクセルかなぁ、と思い、一応このカテゴリに質問いたします。
もしかしたら、乱数を作るソフトなどあれば、アドバイスいただきたいと思います。
No.1ベストアンサー
- 回答日時:
乱数を使って、平均値を100円にするのは困難でしょう。
乱数は多数回、発生させると一様な出現回数になると思います。
ですから、平均=(88+107)/2=97.5となり100にはならないでしょう。
そこで、代案ですが45個の乱数を発生させて平均値を求め、その差額を加算するというのはいかがでしょう。
A2~A46 =RANDBETWEEN(88,107)
B2 =100-AVERAGE(A2:A46)
A2 =ROUND(A2+$B$1,0) 下へCopy
平均に端数は出ますが、その辺は応用で・・・
No.7
- 回答日時:
乱数にはいろいろ種類があります。
RAND()は矩形乱数というものです。一般によく観察されるのは正規分布乱数、あるいは二項分布乱数です。ポアソン乱数というのもあります。まず、それを指定しないと回答できないと思います。
No.6
- 回答日時:
>平均値
乱数を作り、その平均をXとする。個々のデータ全てに、Xと100の差をたす(場合によっては引く)と平均を100にした数を作れると思う。
しかしデータ範囲に影響するので難しい。
理論的に平均を縛ることが、乱数性を乱さないのか、数学の理論的知識が無くてわからない。
>数値の分布幅(例えば88~107)
これだけなら、エクセルにはRANDBETWEEN
関数が在る。WEBで照会のこと。
>数値の個数(例えば45)
45セルに関数を入れれば済むのでは。
式はセルごとに複写する。
再計算の都度(セルに式の複写の機会にも)更新されるから、45セルの乱数が作れたら、セルの値をそのセルに複写して、式を消すことが必要と思う。
ーー
これは本当はエクセルの質問ではなかろう。数学のカテに質問して、妥当性をチェックしてもらったほうがよい。そういう人は(エクセルは今や国民的必須教養で)、必ず知っているから、そちらの回答の方が信を置けると思う。
ーー
>乱数を作るソフトなどあれば
乱数というのは数学的に奥が深いように思う。だから諸理論や方法で
色々方式があるように思う。
Googleで「乱数を作るソフト」で照会すると記事が出る。
ーー
それにしても、大げさな質問だが、何に(どういうことに)使うのかな。
参考に「擬似乱数」の解説を、読んでおいたら。
http://ja.wikipedia.org/wiki/%E6%93%AC%E4%BC%BC% …
No.5
- 回答日時:
マクロでそれらしい数値になるように作って見ました。
やっている事は、平均値をA列に個数分並べて、行を2つ選んで最大値/最小値を超えないように適当な値をプラス/マイナス を、繰り返しています。
乱数とは言えませんが、「それらしい」数値にはなるかと思います。
Sub Sample()
nAve = 100 '平均値
nCount = 45 '個数
nMin = 88 '最小値
nMax = 107 '最大値
'平均値を個数分A列に並べる
For i = 1 To nCount
Cells(i, 1) = nAve
Next i
Randomize '乱数初期化
'並び替えを全体に何回か行う(有る程度やると乱数らしくなる)
For j = 1 To (Int(Rnd() * 5) + 1)
'A列1行づつ処理
For k = 1 To nCount 'kが処理行
'対にする行を乱数で選択
nTarget = Int((nCount - 1) * Rnd) + 1
'乱数で選択された行が処理行で無い場合処理続行
If k <> nTarget Then
nkDif = nMax - Cells(k, 1) '最大値と処理行の値の差
ntDif = Cells(nTarget, 1) - nMin '最小値と選択行の値の差
'0~「上の2つの差の内、小さい方」の範囲で乱数作成
nwork = Int(Rnd * (1 + Application.Min(nkDif, ntDif)))
Cells(k, 1) = Cells(k, 1) + nwork '処理行の値に作った乱数をプラス
Cells(nTarget, 1) = Cells(nTarget, 1) - nwork '選択行の値に作った乱数をマイナス
End If
Next k
Next j
End Sub
No.4
- 回答日時:
>条件付きで、ランダムな数値~~
ある条件が付けば、それはランダムではなくなるはずでは?
>平均値(例えば100)
>数値の分布幅(例えば88~107)
となるような母集団はいくらでもあり得るので、どのようなものを想定するかで得られる値はまったく変わってきます。
母集団分布の例を添付の図に示します。
それぞれの場合で86~107までの積分値が1となり、かつ86~100の積分値が0.5となるようにして、xについて解けば乱数(=累積値)から分布(x)を求める関数を作ることができます。
一番簡単な「例2」の場合で考えると、
X = x-86とすれば、
X^2 + 7*X - 7*84*y = 0 ( 0<y<1 )
なので、これをxについて解いて、yを0~1の値をで発生させれよいという具合です。上例だと
x = (sqrt(2352*y+49)-7)/2 + 86 ( =X + 86 ) となります。
ただし、この関数から得られた有限個のサンプルは、ご指定の条件に近いものではありますが、サンプル集団なのでピッタリの値にはなりません。
(平均値の期待値は100だが、実際のサンプル数が小さければ結果として100からずれる可能性が高いです。)
エクセルでやるにはA列に =Rand()
B列(B1)に、=(SQRT(2352*A1+49)-7)/2+86
として下にオートフィルすれば、例2の場合のサンプル分布が得られます。
実際にためしてみたところ、50個のサンプルだと平均値が98.4~100.5ぐらいになり、どうやらエクセルの乱数には0.5より小さい値が出る傾向が若干ながらあるみたいですね。
ちなみに、正規分布の乱数を発生する場合の例
http://www1.parkcity.ne.jp/yone/math/mathB03_06. …
http://homepage1.nifty.com/gfk/Norm-Rand.htm

No.3
- 回答日時:
乱数を使って平均が100になるようにするのは面倒なことですが、次のようにしてできるだけ100に近い、あるいは100になる値段を出すことができます。
A1セルに平均値と書きB1セルに100と入力します。
A2セルには個数と入力しB2セルには45と入力します。
A3セルには分布幅と入力しB3セルに88、C3セルに107と入力します。
A4セルには=$B$1-A5と式を入力します。
A5セルには=AVERAGE(A6:A100)と式を入力します。
A6セルには次の式を入力し下方に(A100セルまででもよい)オートフィルドラッグします。
=IF(ROW(A1)>$B$2,"",RANDBETWEEN($B$3,$C$3))
この式でRANDBETWEEN関数は88と107の数値の間で乱数を発生させるものです。
A4セルから(個数が45の場合にはA50セルまでを範囲として選択してよい)A100セルまでを範囲として選択して右横方向に例えばCJ列までオートフィルドラッグします。列を多くとることが以後の操作を少なくする上でよい。
D1セルには次の式を入力します。
=MIN(4:4)
E1セルには次の式を入力します。
=ADDRESS(4,MATCH(D1,4:4,0))
つまり6行より下の行で指定された分布幅での乱数を発生させ、その平均値を5行目に表示、指定の平均値からのずれを4行目に表示、D1セルにはそのずれが最も少ない値を表示、E1セルにはその最も少ない値のあるセル番地を表示させています。
この状態でキーボード上のF9ボタンを押します。押すたびに乱数が発生し、指定の平均値からのずれが変わります。ずれの値が0.1以下となればかなり平均値に近い値が乱数で得られたことになります。もちろんその値が0となれば望みの値ということになります。何回も繰り返すことで0になることもあります。一度試験してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数的推理の問題です。 次の条件を満たす全ての数の平均値の一の位はいくらか。 ○3桁から6桁の自然数 8 2022/04/28 01:21
- 統計学 風速を1秒刻みで推定する方法 6 2023/03/03 11:58
- 数学 確率の問題です。 5 2022/12/20 19:18
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 1 2023/01/31 18:53
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 5 2023/01/31 23:35
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- 統計学 どの統計を使えばいいのか教えてください(EZ-Rを使用) 5 2022/10/11 13:28
- 数学 N を2以上の自然数として,N 個のデータ{xn}を考える。以下の3条件が互いに同値であることを示し 1 2023/04/17 18:41
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
エクセル
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
【マクロ】アクティブセルの時...
-
【関数】同じ関数なのに、エラ...
-
【マクロ】A列にある、日付(本...
-
エクセルの循環参照、?
-
【マクロ】3行に上から下に並...
-
【マクロ】WEBシステムから保存...
-
【マクロ】EXCELで読込したCSV...
-
iPhoneのExcelアプリで、別のシ...
-
【エクセル】期限アラートについて
-
【条件付き書式】シートの中で...
-
Excelファイルを開くと私だけVA...
-
Excelの新しい空白のブックを開...
-
派遣会社とかハローワークとか...
-
マクロ・VBAで、当該ファイルの...
-
VBA チェックボックスをオーバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報