[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『解説をおねがいします【乱数について】』(sakura)
Sub Sample()
With Range("A1:J10")
.Formula = "=CHOOSE(MOD(RAND()*10,3)+1,""A"",""B"",""C"")"
.Value = .Value
End With
End Sub
↑上記の内容の解説をおねがいします↑
VBA初心者です。
乱数のプログラムについて
内容は以下です。
●要素がA,B,Cの3種類
この3種類の要素を10×10のマスの中に
ランダムに配置するプログラム
< 使用 Excel:Excel2019、使用 OS:Windows10 >
注意点は。)
ちなみに、下記のように書いた方が分かり易いでしょうね。
=CHOOSE(RANDBETWEEN(1,3),"A","B","C")
(マクロコードではなく、ワークシート関数で表示していますが)
(γ) 2021/09/12(日) 10:55
【余談】
数式リボンの「数式の検証」を使うと誤解を生むので注意が必要です。
というのは、
・途中結果で評価される乱数値は、中間評価のために改めてRAND()で取得しなおされたものです。
・ですから、それに基づいて計算された検証結果としてのCHOOSE関数の値は、
実際の最終値とは異なります。
・つまり、ステップを追っていっても、最後の段階でギャップが生じます。
(γ) 2021/09/12(日) 11:26
A,B,Cをランダムにかつ3つとも同一発生確率で出すと言う趣旨なら、 =CHOOSE(RANDBETWEEN(1,3),"A","B","C") が簡単明解だと思います。
=CHOOSE(MOD(RAND()*10,3)+1,"A","B","C") は間違いですね。 これは、ランダムではあるけれど、 Aが出る確率が他より高くなりますよ。
均等に出すなら、普通は =CHOOSE(3*RAND()+1,"A","B","C") と書きます。MODなど使う必要はありませんし、間違いのもとです。。 これは、RAND関数のヘルプにも、 特定の値の間の乱数を発生させる方式として記述されています。 | a と b の範囲で乱数を発生させるには、次の数式を使います。 | RAND()*(b-a)+a
= 3*RAND()+1 とすることで、1以上4未満の実数が作成されます。 そして、CHOOSEの第一引数は小数部分を切り捨てる仕様なので、結局、 1から3までのランダムな整数をもとに、 "A","B","C"から取り出すことになります。
単純に関数の意味を尋ねるものなら、 それは自分でやったうえで具体的に不明な点を質問して下さい、 というほかありません。
# それにしても、回答しても何の挨拶もなく別スレッドですか、 # 残念な方ですね。 (γ) 2021/09/12(日) 18:14
仕事終わりにたったいま確認しました。
たしかに私がきちんと操作できなくて至らなくて
投稿が意図しないとこで重なったわけですが
事情も知らない上で
単純に批判をする…批判は受けるけど
言いたいことがあるなら
面と向かって言えることだけにして欲しい…
言えるなら受けて立ちます(^^)
ほんとクズだな…yってやつは
あなたの回答は不要だから
さっさと消せ!不快です!
その他の方、
ありがとうございます。
まず、きちんと熟読します。
(sakura) 2021/09/12(日) 21:41
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.