[[20040722163133]] 『ランダムに振り分け』(ポン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ランダムに振り分け』(ポン)

いつもお世話になっています。数字をランダムに振り分けたいのですがどのようにすれば良いでしょうか?

   A  B  C  D

 1         10 

D1に「10」と入れたら、A1、B1、C1にランダムに数字を振り分けたいんですけど・・・例)A1は4、B1は2、C1は4という風に。

どうぞよろしくお願いします。


 A1に =ROUND(RAND()*10,0)
 B1に =ROUND(RAND()*(D1-A1),0)
 C1に =D1-A1-B1
 これでどうでしょう? (純丸)

 [純丸]さんの方法ではA1の方がB1やC1より値が大きくなりやすい傾向にあります。
 どこまで「ランダムさ」が必要なのかによりますが、
 上記の式を別の所で計算し、A1に入れる数字を3種類の中からランダムに選ぶなどの工夫を
 して、大きさに偏りを無くす工夫も必要かも知れませんね。
 (ちゅうねん)

 そうですね。Dの値が10で固定されると、ちゅうねんさんの仰るとおりになりますね。
 Dの値がランダムになると、大きな数字が出た順はC→B→A(Aが極端に小さい)になるようですね。。。→10000件の結果(メロン2)

 面白そうなので、私も参加させてください。
 詳しい事は、わかりませんが、純丸さんの式はそのままにして
 表示する位置を変えてみてはどうでしょう?
 純丸さんの式がA1 B1 C1にあるとして
 ツール→アドイン→分析ツールにチェックを入れて
 D3に10を入力して
 A3に
 =INDIRECT(ADDRESS(1,RANDBETWEEN(1,3)))
 B3に
 =RANDBETWEEN(0,D3-A3)
 C3に
 =D3-A3-B3
 で、どうでしょう?
(夏目雅子似)

 ええっと、私が言いたいのは、D1が10の場合に、[純丸]さんの方法だと、
 =ROUND(RAND()*10,0) で求まる値の平均値は(10の半分の)5に、
 =ROUND(RAND()*(D1-A1),0) だと、平均値は(D1-A1 の半分の)2.5、
 =D1-A1-B1 だと、それぞれを引いた2.5になります。
 ということを言いたかったのです。

 [メロン2]さんの指摘は、[純丸]さんが =ROUND(RAND()*D1,0) とすべき所を
 =ROUND(RAND()*10,0) と誤記したことに起因していると思います。

 [夏目雅子似]さんの方法はおもしろいですね。確かに平均化されます。

 ところで、今気付きましたが、=ROUND(RAND()*10,0) だと、0と10 の出る確率が他の数字
 が出る確率(10%)より低い(5%)です。
 =RANDBETWEEN(0,10) を使うと良いようですね。
 (ちゅうねん)

 >>=ROUND(RAND()*10,0) で求まる値の平均値は(10の半分の)5に、
 >>=ROUND(RAND()*(D1-A1),0) だと、平均値は(D1-A1 の半分の)2.5、
 >>=D1-A1-B1 だと、それぞれを引いた2.5になります。
 >>ということを言いたかったのです。

 ほんとだ。。。5:2.5:2.5前後で推移しますね。。。
 85へぇ。。。(メロン2)

 > =ROUND(RAND()*10,0) と誤記
 おっしゃる通りです。初めは2行とも"10"を使って考えていたのですが、D1の変更に
 対応すべく、"10"を"D1"に変えた方がいいと思い、変えたのですが、1行目を
 変え忘れました。みなさん、すみません。
 >  [純丸]さんの方法ではA1の方がB1やC1より値が大きくなりやすい傾向にあります。
 これも思慮が足りませんでした。ちゅうねんさん、ご指摘ありがとうございました。
 RND関数の使い方は慎重にしないといけないようですね。(純丸)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.