01-VBA

制御構文|Excel VBA (Part.7)【For Next】ネスト編(後編)重複のないランダムな数の生成

お知らせ

こちらの記事は、電子書籍「難しく考えないExcel VBA基礎学習編」として出版されました。記事は途中までが試し読みの対象となります。

howahowablogのVBA記事が電子書籍にて販売となりました。

目標

For~Nextのネストを利用して複雑な処理を記述できる
ネストした繰り返し文の動きをイメージできる
Rnd関数とFor文のネストを利用して重複のないランダムな数列を生成できる

乱数の概要

乱数と疑似乱数

規則性のない予測不能な数値のことを「乱数」言います。コンピュータによって生成される乱数は実は一定のルールで生成されます。これを「疑似乱数」といいます。

規則性のない予測不能な数値を生成するのは何やら難しそうですが、プログラミング言語には、その為の関数が準備されています。VBAにもRnd関数という関数があり、これを利用してランダムな数値(疑似乱数)を生成することができます。

Rnd関数とRandomizeステートメントの利用方法

Rnd関数の文法

Rnd関数は1つの引数を取ることが出来ます。

Rnd(引数)

Rnd(-1)の場合

マイナスの値を引数に設定すると、この引数がシード値として利用され、毎回同じ値を生成することになります。

Rnd(0)の場合

数値の「0」を引数とするとその直前に生成したシード値を再利用することになります。数値の「0」はマイナスの値と違って引数で使用してもシード値として利用されることはありません。

Rnd(4)やRan()の場合

引数に「正の値」か「値を省略」した場合は疑似乱数はシーケンスの次の番号を戻り値として返します。※戻り値:ここはシード値のことではありません。

シード値って何?

ランダムな数値を生成するときは専用のアルゴリズムを利用しています。それらのアルゴリズムは「任意の値」を基にして数値を生成するように組まれています。この任意の値を「シード値」と言います。

例えばシード値を「-1」にすると「-1」を基にした数の生成を行います。シード値が同じ場合は毎回同じ値が生成されます。毎回同じ値となると規則性がない数値と言いづらいですが、このシード値を時間などで設定したりすることで生成される数値をランダムに見せかけることが出来ます。

この記事の試し読みはここまでとなります。

Rnd関数の戻り値

Randomizeステートメント

サンプルプロシージャ1

実行結果

Rnd関数を利用して重複のない数列を生成する

重複がない乱数の生成

サンプルプロシージャ2

実行結果

重複のない乱数を応用したプログラムの作成

実行結果

プロシージャの解説

今回は以上となります。

howahowablogのVBA記事が電子書籍にて販売となりました。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

印刷機能|Excel VBA (Part.1)【PageSetupプロパティ/PrintPreviewメソッド/PrintOutメソッド】編

2022年12月5日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の「オブジェクト活用」(Part.1)【ワークシートと行列の活用編】

2022年12月14日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ダイアログボックス|Excel VBA (Part.2)【MsgBox】組み込み定数編

2022年12月3日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site