- ベストアンサー
エクセルで一定の確率で結果を返す方法
エクセルのセルに、一定の確率で数値や文字を表示させることはできますか? 例えば10%の確率でA、20%の確率でB、30%の確率でC、40%の確率でDといった具合です。 よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
RAND関数とVLOOKUP関数を使ってみたらどうでしょう。 B列に「A」を10%、「B」を20%、「C」を30%、「D」を40% 出現させる例を考えると以下のようなものです。 RAND関数は0から1までの間の乱数を発生させる関数ですから 0から1のでの間をそれぞれ 10:20:30:40になるように分けます。 つまり (1)0以上0.1未満・・・・・・Aを表示 (2)0.1以上から0.3未満・・・Bを表示 (3)0.3以上から0.6未満・・・Cを表示 (4)0.6以上から1.0未満・・・Dを表示 のような設定を考えます。 これを「表=テーブル」としてシートに書き込みしておきます。 例えば、D1:E4に以下のように記述します 0 A 0.1 B 0.3 C 0.6 D まず、A列に乱数を発生させるため、A1に以下の式を記述します。 =RAND() この乱数に対応してA、B、C、Dを決定することになるので B1に以下の式を記述します =VLOOKUP(A1,$D$1:$E$4,2) VLOOKUP関数では、検索の型を省略した場合(または型が「TRUE」の場合は 「検索値」が見つからない場合は、検索値未満の最も大きい値が返されま すので、この仕様を利用しています。(ただし検索されるテーブルは昇順で なくてはいけません) A1とB1に式を記述したら適当な行数までコピーします。 試しに10000行までコピーし、結果を検証します。 B1001 に=COUNTIF($B$1:$B$10000,"A")/10000を記述し、%表示させます。 B1002 に=COUNTIF($B$1:$B$10000,"B")/10000を記述し、%表示させます。 B1003 に=COUNTIF($B$1:$B$10000,"C")/10000を記述し、%表示させます。 B1004 に=COUNTIF($B$1:$B$10000,"D")/10000を記述し、%表示させます。 それぞれ10%、20%、30%、40%(またはそれにきわめて近い値) になることが確認できます。
その他の回答 (1)
- soixante
- ベストアンサー率32% (401/1245)
表示のタイミングがどうなのかが不明瞭ですが、以下はヒントになりますでしょうか。 ・RAND関数で乱数を発生させることが出来る。 =RAND() で、0≦x<1 の乱数が出来る。そこから、 =RAND()*10 とすれば、0≦x<10 の乱数が出来る。 で、=INT(RAND()*10) としてやれば、 0~9までの整数が出てきます。これでもいいけど分かりやすく、 =INT(RAND()*10+1) としておけば、 1~10までの整数がランダムに出せます。 ・どこか別の表に、1~10に対応した表を作っておいて、そこからVLOOKUPで引っ張ってこればどうでしょう。 例) ・A1セルに 1 と入れ、A10セル 10まで。 =ROW() をA1に入れて下に引っ張ってもいいですが。 ・B1セルは、"A" 、B2~B3セルは、"B"、 B4~B6セルは"C"、 B7~B10セルには"D" このようにして、後は乱数で出した数値を検索値として、この表に対応させてVLOOKUPで引っ張ってくれば良いと思います。 ご意向と違った回答でしたらすみません。
お礼
回答ありがとうございます。 No2の方からも同様の使い方を教えて頂き解決しました。 こんなに素早く回答いただけて本当に助かりました。またの機会がありましたらよろしくお願いします。
お礼
親切・丁寧な回答をどうもありがとうございます。 RAND関数・VLOOKUP関数それぞれについての知識はあったのですが、組み合わせてこういう使い方をするのは初めて知り、奥が深いものだと感心しました。 本当にありがとうございます。