[[20210912103033]] 『解説をおねがいします【乱数について】』(sakura) ページの最後に飛ぶ

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

 

『解説をおねがいします【乱数について】』(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 >


書いた人に聞けばいいのでは?
書いた人に聞けない理由は?
曜日的に試験問題の意味が、分からなかった?
でしたら、試験が終わってるであろう夕方
頃には回答かみ付くかも知れませんが。
(通りすがり) 2021/09/12(日) 10:47

ネットで拾ったコードの意味がわからない、
ということでしたら、さっさとそのコードは捨てて、
自分で勉強しながらコードを組み立てることを
お勧めします。
(通りすがり) 2021/09/12(日) 10:50

RAND関数
MOD関数
CHOOSE関数
の意味をヘルプ等で調べてみれば前に進めると思いますが。
不明点はどこですか?
(小数点がある場合、切り捨てて整数部分だけで、CHOOSE関数が適用されるくらいですかね、
  注意点は。)

ちなみに、下記のように書いた方が分かり易いでしょうね。
=CHOOSE(RANDBETWEEN(1,3),"A","B","C")
(マクロコードではなく、ワークシート関数で表示していますが)

(γ) 2021/09/12(日) 10:55


マクロでは、シートに計算式をセットして計算させ、
値だけにしているわけで、ワークシート計算の理解が不可欠です。
・RAND関数は[0,1)区間の一様乱数を返すもの(Excel2010以降はメルセンヌツイスタを使って計算されている由)
・MOD(n, 3) は n を3で割った剰余です。
・CHOOSE関数の留意点は記述済。
 
・RANDBETWEEN(最小値、最大値)は、最小値以上最大値以下の整数からランダムに取り出すもの。これを使うべき。
ですね。
(余り説明になっているとも思えないが)

【余談】
数式リボンの「数式の検証」を使うと誤解を生むので注意が必要です。
というのは、
・途中結果で評価される乱数値は、中間評価のために改めて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)

仕事終わりにたったいま確認しました。
たしかに私がきちんと操作できなくて至らなくて
投稿が意図しないとこで重なったわけですが

事情も知らない上で
単純に批判をする…批判は受けるけど

言いたいことがあるなら
面と向かって言えることだけにして欲しい…
言えるなら受けて立ちます(^^)

ほんとクズだな…yってやつは

あなたの回答は不要だから
さっさと消せ!不快です!

その他の方、
ありがとうございます。
まず、きちんと熟読します。
(sakura) 2021/09/12(日) 21:41


コメント返信:

[ 一覧(最新更新順) ]


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