月別アーカイブ: 2023年6月

脳を使った休息術 茂木健一郎著 の感想

 

 私はついつい時間があるとyoutubeやpodcastやSNSを眺めてみたり、ゲームをやったりしてしまいます。必ずしもそれがためになっていたり楽しかったりしているようには感じないこともあるのですが、ついついやってしまいます。
 本書は脳は無限には情報を処理することはできませんと言い切り、脳の休め方のヒントをたくさん紹介します。説明の中ではたまに聞くことがある「マインドフルネス」や「デフォルトモードネットワーク」などと言った言葉も現れ、一人時間の大切さなども言及されます。本書の方がだいぶ古い本ではありますが、以前読んだ「内向型も自信をもとう静かな人の戦略書」でも一人時間の大切さを感じたのですこしつながりを感じました。

Excel VBAで0以上1以下の乱数を生成する方法を考えてみました

 VBAで乱数を生成するときは「Rnd」を使用するかと思います。このRndは0以上1未満の乱数を作ります。
 私は考えます。なんで0以上1以下じゃないの?

 VBAで0以上1以下の乱数を作る方法についてググってもなかなか出てきません。調べているうちに、一般的に乱数は〇以上□未満の乱数がよく使われますという記述を見つけるくらい。

 調べても出ないので自分で考えてみました。

0以上1以下の乱数を生成する方法はこれだ!(多分間違っている)

 最初に結論を書きます。

Function random_single() As Single
    Randomize
    Dim random_1 As Single
    Dim random_2 As Single
    
    random_1 = Rnd
    random_2 = Rnd
    
    If random_1 = 0 Then
        random_single = 1
    Else
        random_single = random_2
    End If
End Function

 簡単に説明しますと。random_singleという関数で0以上1以下の乱数を得ることを目指します。
 そのために、Rndを2回使用し0以上1未満の乱数を2つ生成します。それぞれrandom_1, random_2に代入します。
 このrandom_1とrandom_2の値により下図のように場合分けしてrandom_singleへ代入し0以上1以下の乱数を得ます。

 これで、random_doubleにより0以上1以下の乱数を得ることができます。

問題点

 趣味レベルでしたら多分このやり方で十分だと思いますが、図を見て分かりますとおり私の提案するやり方ですと0が出る確率より1が出る確率が多くなると思います。また、私はVBAの特性は全然理解できていませんし考慮できていません。

最後に

 ここまで記事を読んでいただきありがとうございました。
 今回のことを実現するまでにいろいろググったのですが、0以上1以下の乱数の作り方はすぐには見つかりませんでした。 それともちょうど1が出る確率は相当低いでしょうから、別に気にしなくてもいいということなのでしょうか。
 とりあえず作ってみたのですが、他に良い方法をご存知の方がいらっしゃったら教えていただけると幸いです。