Excelで乱数を生成するRAND関数とRANDBETWEEN関数

  • これを共有
Michael Brown

このチュートリアルでは、Excelの乱数生成アルゴリズムの特異性を説明し、RAND関数とRANDBETWEEN関数を使ってExcelで乱数、日付、パスワード、その他のテキスト文字列を生成する方法を実演しています。

Excelで乱数を生成するさまざまなテクニックを紹介する前に、乱数とは何かを定義しておきましょう。 平たく言えば、乱数とはパターンを持たない一連の数字、文字、その他のシンボルのことです。

乱数は暗号、統計、宝くじ、ギャンブルなど様々な分野で応用されていますが、常に需要があるため、古くからコインをはじく、サイコロを振る、トランプをシャッフルするなど、様々な乱数生成の方法が存在しています。 もちろん、このチュートリアルでは、このような「エキゾチックな」テクニックには頼らず、以下のことに焦点を当てます。Excelの乱数発生器が提供するもの。

    Excel乱数生成ツール - 基本編

    Excelのランダムジェネレータは、標準的なランダム性のテストはすべてクリアしていますが、その生成には 真の でも、すぐには諦めないでください。) ぎじらんばい Excelのランダム関数で生成される数値は、多くの用途で問題ありません。

    Excelのランダムジェネレータのアルゴリズムについて詳しく見ていきましょう。

    多くのコンピュータ・プログラムがそうであるように、Excelの乱数発生器は生成します。 擬似乱数 つまり、Excelで生成される乱数は、そのアルゴリズムの詳細を知っている人がいれば、理論的には予測可能だということです。 これが、これまで文書化されてこなかった理由であり、今後もほとんどされないでしょう。 では、Excelの乱数生成器について何がわかっているのでしょうか。

    • ExcelのRAND関数とRANDBETWEEN関数は、擬似的に乱数を生成するために ユニフォーム 分布 一様分布とは、ある確率変数がとりうるすべての値に対して等しい確率をもつ分布のことです。 一様分布のよい例は、1個のサイコロを投げることです。 投げられた結果は6つの値(1、2、3、4、5、6)があり、これらの値の発生確率はそれぞれ等しくなっています。 より科学的に説明するには wolfram.com で確認して下さい。
    • ExcelのRAND関数やRANDBETWEEN関数は、コンピュータのシステム時間から初期化されると噂されていますが、シードする方法がありません。 技術的には Excelの乱数関数が呼ばれるたびに、一意の乱数列を返す新しい種が使われます。 つまり、Excelの乱数生成器を使う場合、RANDやRANDBETWEEN関数、VBA、その他の手段では、繰り返し使える列を得ることができません。
    • Excel 2003以前の初期のExcelバージョンでは、ランダム生成アルゴリズムは比較的小さな周期(100万個以下の非反復乱数列)を持ち、長い乱数列に対するランダム性のいくつかの標準テストに失敗しました。 ですから、もし誰かがまだ古いExcelバージョンで仕事をしているなら、大きなシミュレーション・モデルでRAND関数を使わない方がいいでしょうね。

    をお探しの方。 真の ランダムなデータを生成するには、おそらく www.random.org のようなサードパーティの乱数発生器が使えるでしょう。そのランダム性は大気中のノイズに由来します。彼らは、乱数、ゲームや抽選、カラーコード、ランダムな名前、パスワード、英数字列、その他のランダムデータの生成サービスを無償で提供しています。

    さて、この長い技術的な紹介は終わり、実用的でより役に立つことを紹介することにします。

    Excel RAND関数 - ランダムな実数値を生成

    があります。 ランド は、乱数を生成するために特別に設計された2つの関数のうちの1つです。 0から1の間のランダムな10進数(実数)を返します。

    RAND() は volatile 関数で、ワークシートの計算を行うたびに新しい乱数が生成されます。 そして、これはワークシート上で何らかの操作を行うたびに発生します。たとえば、数式 (RAND 式でなくてもシート上の他の数式) の更新、セルの編集、新しいデータの入力を行った場合です。

    RAND関数は、Excel365~2000のすべてのバージョンで利用可能です。

    Excel の RAND 関数には引数がないので、単純に次のように入力します。 =RAND() をセルに入力し、その数式を必要な数だけセルにコピーします。

    そして今度は、さらに一歩進んで、条件に応じて乱数を発生させるRAND式をいくつか書いてみましょう。

    式1.範囲の上限値を指定する

    0から任意の数の乱数を生成するには N の値は、RAND関数をN倍したものです。

    RAND()* N

    例えば、0以上50未満の乱数列を作成する場合は、以下の式を使用します。

    =RAND()*50

    注意:上限値は返される乱数列に含まれることはありません。 例えば、10を含む0から10までの乱数を取得したい場合、正しい式は次のようになります。 =RAND()*11 .

    式2:2つの数値の間に乱数を発生させる

    指定した任意の2つの数値の間に乱数を発生させるには、次のRAND式を使用します。

    RAND()*() B - A )+ A

    どこ A は下限値(最小の数値)であり B は上限値(最大の数値)です。

    例えば、10〜50の乱数を生成する場合、以下の式で計算できます。

    =rand()*(50-10)+10

    注意:この乱数式は、指定された範囲の最大数に等しい数を返すことはありません( B の値)を設定します。

    数式3.Excelで乱数整数を生成する

    Excel の RAND 関数でランダムな整数を生成するには、上記のいずれかの数式を INT 関数で囲みます。

    0から50までのランダムな整数を作成すること。

    =int(rand()*50)

    10から50までのランダムな整数を生成すること。

    =INT(RAND()*(50-10)+10)

    Excel RANDBETWEEN関数 - 指定した範囲のランダムな整数を生成する

    RANDBETWEENは、Excelが提供する乱数生成のためのもう一つの関数です。 これは、ランダムな 整数 を指定した範囲内で使用します。

    ランドビートウェーン(下、上)

    明らかに。 b オットマン は最小の数であり トップ は、取得したい乱数の範囲の中で最も大きい数です。

    RANDと同様、ExcelのRANDBETWEENは揮発性の関数で、スプレッドシートが再計算するたびに新しいランダムな整数が返されます。

    例えば、10と50の間のランダムな整数(10と50を含む)を生成するには、次のRANDBETWEEN式を使用します。

    =randbetween(10, 50)

    ExcelのRANDBETWEEN関数は、正の数と負の数の両方を作成できます。 たとえば、-10から10までのランダムな整数のリストを取得するには、ワークシートに次の数式を入力します。

    =randbetween(-10, 10)

    RANDBETWEEN関数は、Excel 365~Excel 2007で利用可能です。 それ以前のバージョンでは、上記の例3で示したRAND式が利用できます。

    このチュートリアルではさらに、RANDBETWEEN関数を使用して整数以外の乱数値を生成する方法を示すいくつかの式の例を紹介します。

    ヒント:Excel 365およびExcel 2021では、動的配列RANDARRAY関数を使用すると、指定した任意の2つの数値の間の乱数の配列を返すことができます。

    小数点以下の桁数を指定した乱数の作成

    ExcelのRANDBEETWEEN関数は、ランダムな整数を返すように設計されていますが、強制的に小数点以下の任意の桁数の数字を返すようにすることができます。

    例えば、小数点以下1桁の数字の羅列を得るには、下と上の値を10倍して、返された値を10で割ればいいのです。

    ランドビートゥエン( ボトムバリュー * 10, 最高値 * 10)/10

    次の RANDBETWEEN 式は、1 から 50 までのランダムな 10 進数を返す。

    =randbetween(1*10, 50*10)/10

    同様に、小数点以下2桁の1から50までの乱数を生成するには、RANDBETWEEN関数の引数に100を掛け、その結果も100で割ります。

    =randbetween(1*100, 50*100) / 100

    Excelでランダムな日付を生成する方法

    与えられた2つの日付の間のランダムな日付のリストを返すには、RANDBETWEEN関数とDATEVALUEを組み合わせて使用します。

    ランドビュートゥーン(datvalue()) 開始日 ), DATEVALUE( 終了日 ))

    例えば、2015年6月1日から2015年6月30日を含む日付のリストを取得するには、ワークシートに次の数式を入力します。

    =RANDBETWEEN(DATEVALUE("1-Jun-2015"),DATEVALUE("30-Jun-2015"))

    また、DATEVALUEの代わりにDATE関数を使用することもできます。

    =randbetween(日付(2015,6,1),datevalue(2015,6,30))

    セルに日付の書式を適用すると、次のようなランダムな日付のリストが表示されることを忘れないでください。

    平日や週末をランダムに生成するなどの高度なオプションについては、Advanced Random Generator for datesを参照してください。

    Excelでランダムな時間を挿入する方法

    Excelの内部システムでは時刻は小数で保存されていることを思い出し、Excel標準のRAND関数を使ってランダムな実数を挿入し、時刻のフォーマットをセルに適用するだけでよいのです。

    条件に従ってランダムな時間を返すには、以下に示すように、より具体的なランダム式が必要である。

    式1.指定された範囲のランダムな時間を発生させる

    指定した2つの時間の間にランダムな時間を挿入するには、TIMEまたはTIMEVALUE関数とExcel RANDを組み合わせて使用します。

    時間( 開始時刻 )+rand() * (時間()) 開始時刻 ) - TIME( 終了時間 )) TIMEVALUE( 開始時刻 )+rand() * (時間値()) 開始時刻 ) - TIMEVALUE( 終了時間 ))

    例えば、午前6時から午後5時30分の間にランダムな時間を挿入するには、次のいずれかの数式を使用します。

    =time(6,0,0) + rand() * (時間(17,30,0) - 時間(6,0,0))

    =timevalue("6:00 am") + rand() * (timevalue("5:30 pm") - timevalue("6:00 am"))

    式2.ランダムな日時を生成する

    ランダムなリストを作成するには 日時 の場合、RANDBETWEEN関数とDATEVALUE関数を組み合わせて使用します。

    ランドビュートゥーン(datvalue()) 開始日) DATEVALUE( 終了日 )) + randbetween(時間値( 開始時刻 ) * 10000, 時間値( 終了時間 ) * 10000)/10000

    仮に、2015年6月1日から2015年6月30日の間のランダムな日付を、午前7時30分から午後6時の間の時間で挿入したい場合、以下の式でうまくいきます。

    =RANDBETWEEN(DATEVALUE("1-Jun-2015"), DATEVALUE("30-Jun-2015")) + RANDBETWEEN(TIMEVALUE("7:30 AM") * 10000, TIMEVALUE("6:00 PM") * 10000) / 10000

    また、DATE関数とTIME関数を使って、それぞれ日付と時間を供給することができます。

    =randbetween(date(2015,6,1), date(2015,6,30)) + randbetween(時間(7,30,0) * 10000, 時刻(18,0,0) * 10000) / 10000

    Excelでランダムな文字を生成する

    ランダムな文字を返すには、3種類の機能の組み合わせが必要です。

    =char(randbetween(code("a"),code("z"))))

    どこ A は最初の文字であり Z は、含めたい文字の範囲の最後の文字です(アルファベット順)。

    上記の式で

    • CODE は,指定された文字に対応する ANSI コードを数値で返す。
    • RANDBETWEENは、CODE関数が返す数値を範囲の底値と上値として受け取ります。
    • CHAR は,RANDBETWEEN が返すランダムな ANSI コードを対応する文字に変換する。

    注)ANSIコードは大文字と小文字で異なるため、この計算式は ケースセンシティブ .

    ANSI文字コード表を暗記している人がいれば、RANDBETWEEN関数に直接コードを供給することを妨げるものは何もありません。

    例えば、ランダムに取得するために 大文字 A (ANSIコード65)と Z (ANSIコード90)と書いていますね。

    =char(randbetween(65, 90))

    生成するため 小文字 から a (ANSIコード97)を z (ANSIコード122)を使用する場合は、以下の計算式を使用します。

    =char(randbetween(97, 122))

    などのランダムな特殊文字を挿入する場合 !" # $ % & ' ( ) * + , - . /, でRANDBETWEEN関数を使用します。 パラメータを33(ANSIコードで「!」)に設定し トップ パラメータを47(ANSIコード:"/")に設定します。

    =char(randbetween(33,47))

    Excelで文字列やパスワードを生成する

    Excelでランダムな文字列を作成するには、いくつかのCHAR / RANDBEETWEEN関数を連結するだけです。

    例えば、4文字で構成されるパスワードのリストを生成するには、次のような数式を使用することができます。

    =RANDBETWEEN(0,9) & CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(97,122)) & CHAR(RANDBETWEEN(33,47))

    数式をコンパクトにするために、ANSIコードを直接数式で与えています。 4つの関数は、次のような乱数値を返します。

    • はんたいちゅう - は0から9の間の乱数を返す。
    • char(randbetween(65,90)) - の間にあるランダムな大文字を返します。 A Z .
    • char(randbetween(97, 122)) - の間のランダムな小文字を返します。 a z .
    • char(randbetween(33,47)) - はランダムな特殊文字を返します。

    上記の式で生成されるテキスト文字列は、" 4Np# " または " 2Yu& ".

    注意点! もちろん、CHAR/RANDBETWEEN関数をさらに連鎖させて、より長い文字列を生成できないわけではありません。 しかし、1番目の関数は常に数字を返し、2番目の関数は大文字を返すなど、文字の順番をランダムにすることは不可能です。

    任意の長さとパターンのテキスト文字列を生成できるExcelの高度なランダムパスワード生成ツールをお探しなら、テスト文字列用のAdvanced Random Generatorの機能をチェックするのもよいでしょう。

    また、上記の式で生成された文字列は、ワークシートが再計算されるたびに変化することに留意してください。 一度作成した文字列やパスワードが変わらないようにするには、RANDBETWEEN関数による値の更新を止める必要があり、次のセクションに直接つながっています。

    RANDとRANDBETWEENの再計算を防止する方法

    シートが再計算されるたびに変わることのない、永久的な乱数、日付、テキスト文字列のセットを取得したい場合は、以下のテクニックのいずれかを使用してください。

    1. でRANDまたはRANDBETWEEN関数の再計算を停止するには、次のようにします。 一房 を選択し、数式バーに切り替えてF9キーを押すと、数式がその値に置き換わります。
    2. Excelのランダム関数が再計算されないようにするには、特殊な貼り付け>値機能を使用します。 ランダム式のあるセルをすべて選択し、Ctrl + Cキーを押してコピーし、選択した範囲を右クリックし、[ ]をクリックします。 ペースト・スペシャル > 価値観 .

    乱数を「凍結」させるこのテクニックについて詳しくは、数式を値に置き換える方法をご覧ください。

    Excelでユニークな乱数を生成する方法

    Excelの乱数関数は、どちらもユニークな乱数値を生成することはできません。 乱数のリストを作成する場合は、次のようにします。 重複なく は、以下の手順で行ってください。

    1. RAND関数またはRANDBETWEEN関数を使って乱数のリストを生成します。 いくつかは後で削除する重複となるため、実際に必要な数よりも多くの値を作成します。
    2. 上記で説明したように、数式を値に変換する。
    3. Excelの内蔵ツール、または当社の高度なDuplicate Remover for Excelを使用して、重複する値を削除します。

    その他の解決策は、このチュートリアルで見ることができます:重複のない乱数を生成する方法。

    高度な乱数生成ツール(Excel用

    Excelでランダム関数を使用する方法を知っている今、私はあなたのワークシートに乱数、日付や文字列のリストを作成するために、より速く、簡単に、数式なしの方法を示してみましょう。

    AbleBits Random Generator for Excelは、ExcelのRANDおよびRANDBETWEEN関数に代わる、より強力でユーザーフレンドリーな関数として設計されました。 Microsoft Excel 2019、2016、2013、2010、2007、2003のすべてのバージョンで同様に動作し、標準ランダム関数の品質とユーザビリティの問題のほとんどを解決しています。

    AbleBits乱数発生器アルゴリズム

    ランダム・ジェネレーターの動作をご紹介する前に、そのアルゴリズムについて少しご説明します。

    • AbleBits Random Number Generator for Excelは、高品質の疑似乱数生成の業界標準とされるMersenne Twisterアルゴリズムをベースにしています。
    • 我々は、2^19937 - 1という非常に長い周期を持つ32ビット整数の正規分布シーケンスを生成するバージョンMT19937を使用しており、これは想像し得るすべてのシナリオに対して十分すぎるほどである。
    • この乱数生成器は、NIST Statistical Test SuiteやDiehardテスト、TestU01 Crushランダムネス・テストの一部など、複数の統計的ランダムネス・テストに合格しており、非常に高い品質の乱数を生成することができます。

    Excelの乱数関数とは異なり、当社の乱数生成器は、以下のようなものを作成します。 永久ランダム値 は、スプレッドシートの再計算時に変更されない。

    すでに述べたように、このExcel用乱数生成ツールは、数式を使わずに(その結果、エラーが発生しない : )、次のような様々な乱数値を生成する方法を提供します。

    • ユニークナンバーを含むランダムな整数または10進数
    • ランダムな日付(平日、週末、またはその両方、オプションでユニークな日付も可能)
    • 任意の長さとパターンのパスワードを含むランダムテキスト文字列、またはマスクによるもの
    • TRUEとFALSEのランダムなブール値
    • カスタムリストからのランダム選択

    それでは、お約束の「乱数発生装置」の動作をご覧ください。

    Excelで乱数を生成する

    AbleBits Random Number Generatorを使えば、乱数リストの作成も、クリックするだけで簡単にできます。 生成する ボタンをクリックします。

    ユニークな乱数整数の生成

    やるべきことは、ランダムな整数を入力する範囲を選択し、底値と上値を設定し、オプションで ユニークバリュー ボックスを使用します。

    ランダムな実数(10進数)の生成

    同様に、指定した範囲のランダムな10進数列を生成することができます。

    Excelでランダムな日付を作成する

    日付については、当社の乱数発生装置は以下のオプションを提供します。

    • 特定の期間の日付をランダムに生成する - 下部の日付を から のボックスと先頭の日付が表示されます。 への ボックスを使用します。
    • 平日、週末、またはその両方を含めてください。
    • 一意の日付を生成する。

    ランダムなテキスト文字列やパスワードの生成

    乱数や日付の他に、特定の文字セットを持つランダムな英数字の文字列を簡単に作成することができます。 文字列の長さは最大99文字で、非常に強力なパスワードを生成することが可能です。

    AbleBits乱数ジェネレータが提供するユニークなオプションは、以下のとおりです。 マスクによるランダムなテキスト文字列 GUID(グローバルユニーク識別子)、郵便番号、SKUなどの生成に非常に有効な機能です。

    例えば、ランダムなGUIDのリストを得るには、16進文字セットを選択し、「?」と入力します。 マスク ボックスの中で、スクリーンショットに示すように

    ランダム・ジェネレータを試してみたい方は、Ultimate Suite for Excelの一部として、以下からダウンロードしてください。

    ダウンロード可能なもの

    ランダムな計算式の例 (.xlsxファイル)

    Ultimate Suite 14日間フル機能版(.exeファイル)

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。