メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

指定された平均値と標準偏差に基づいてExcelで乱数を生成する

Author Sun Last modified

指定された平均値と標準偏差を持つ乱数のセットを生成することは、統計シミュレーション、アルゴリズムのテスト、または金融、工学、教育分野でのプロセスモデリングにおける一般的な要件です。しかし、Excelにはこのような特定の平均値と標準偏差に応じた乱数リストを直接生成する組み込み関数は提供されていません。特定の特性に統計的に一致するランダムなテストデータを頻繁に作成する必要がある場合、その方法を理解することでワークフローの効率とデータの品質を大幅に向上させることができます。

このチュートリアルでは、指定した平均値と標準偏差に基づいて乱数を生成するための実用的な方法を紹介します。詳細なステップバイステップの手順、数式パラメータの説明、エラー防止やトラブルシューティングのための専門的なヒントを提供します。さらに、このプロセスを自動化したり大規模なデータセットを効率的に生成したいユーザー向けにVBAマクロソリューションも提供します。

指定された平均値と標準偏差に基づいて乱数を生成する

VBAコード - 指定された平均値と標準偏差を持つ乱数を生成する


arrow blue right bubble 指定された平均値と標準偏差に基づいて乱数を生成する

Excelでは、標準関数を組み合わせることで、目的の平均値と標準偏差に合致する乱数のセットを作成できます。小規模から中規模のデータセットや迅速かつアドホックなニーズに適した解決策として、以下の手順に従ってください。

1. まず、ターゲットとなる平均値と標準偏差を2つの別々の空セルに入力します。整理しやすくするために、必要な平均値をセルB1、必要な標準偏差をセルB2に使用するとしましょう。スクリーンショットをご覧ください:
 type mean and standard deviation into two empty cells

2. 最初のランダムデータを作成するため、セルB3に次の数式を入力します:

=NORMINV(RAND(),$B$1,$B$2)
数式を入力後、フィルハンドルをドラッグして必要な行数だけ埋めてください。各セルは指定された平均値と標準偏差に基づいて値を生成します。
enter a formula and fill to other cells

ヒント: 数式 =NORMINV(RAND(),$B$1,$B$2) 内で:

  • RAND() は、ワークシートが再計算されるたびに0から1の間で異なるランダム確率を生成します。
  • $B$1 は指定された平均値を指します。
  • $B$2 は指定された標準偏差を指します。
最新バージョンのExcel(2010以降)では、 =NORM.INV(RAND(),$B$1,$B$2)を使用することを考えるとよいでしょう。これは機能的には同じですが、更新された関数名を反映しています。

3. 生成された数値があなたの意図した平均値と標準偏差に統計的に一致していることを確認するため、以下の数式を使用して生成されたサンプルの実際の値を計算します。セルD1で、次のようにしてサンプル平均を計算します:

=AVERAGE(B3:B16)
D2では、次のようにしてサンプルの標準偏差を計算します:
=STDEV.P(B3:B16)
apply this AVERAGE function to calculate the mean
apply this STDEV.P function to calculate the standard deviation

ヒント:

  • B3:B16は例としての範囲です。ステップ2で生成した乱数の数に応じて調整してください。
  • より大きなランダムサンプルでは、大数の法則により、実際の平均値と標準偏差が指定値に近づきます。

4. シリーズをさらに調整して正確な目標平均値と標準偏差に一致させるため、初期の乱数値を正規化します。セルD3に次の数式を入力します:

=$B$1+(B3-$D$1)*$B$2/$D$2
フィルハンドルをドラッグして、乱数のあるすべての行まで埋めます。この数式は初期値を標準化し、B1およびB2の平均値と標準偏差に正確に合わせます。
enter a fromula to generate the real random numbers

ヒント:

  • B1は指定された平均値です。
  • B2は指定された標準偏差です。
  • B3は元の乱数値です。
  • D1はこれらの元の乱数値の平均です。
  • D2はこれらの元の乱数値の標準偏差です。

これで、最終的な値のセットが要件を満たしていることを確認できます。品質保証および文書作成のために、平均値と標準偏差を再計算してください。

5. セルD17で、次の数式を使用して最終的な乱数セットの平均値を計算します:

=AVERAGE(D3:D16)
次に、セルD18で以下の数式を使用して標準偏差を計算します:
=STDEV.P(D3:D16)
check the mean and standard deviation of the final random number series with formulas

ヒント: D3:D16は最終的な乱数の範囲を指します。

トラブルシューティング:

  • #VALUE! エラーが表示される場合、参照されているすべてのセル範囲を再度確認し、空白または無効なセルを参照していないか確認してください。
  • 数式が再計算するたびに変更され続ける場合、最終的な乱数を選択し、コピーして「形式を選択して貼り付け」>「値」を使ってさらなる更新を防ぎます。
  • Excelのランダムジェネレーターは再計算に依存するため、一貫性が重要である場合は静的な結果を保存する必要があります。

VBAコード - 指定された平均値と標準偏差を持つ乱数を生成する

大量のランダムデータを迅速に生成する必要があり、特に繰り返し、自動化、または高ボリュームが必要な場合、VBAマクロは時間節約につながる解決策を提供します。一度の実行で、フルデータセットをワークブックに直接作成でき、手動による反復や数式のコピー間違いを最小限に抑えることができます。

このアプローチは以下の場合に適しています:

  • シミュレーション、ストレス試験、または教育デモ用のランダムデータセットを自動生成する場合。
  • 出力フォーマットを最小限の手動操作で標準化したい場合。
  • ExcelのVBAエディタの使用に慣れているユーザー。

数式方式と比較すると、VBAは動的な調整や複雑なワークフローとの統合を可能にしますが、マクロが有効になっていることや、「マクロ対応」の.xlsm形式で明示的に保存する必要があることに注意してください。

1. Excelリボン上で「開発ツール」をクリックします(表示されていない場合は、「ファイル」>「オプション」>「リボンのユーザー設定」で有効にします)。次に「Visual Basic」を選択します。「Visual Basic for Applications」ウィンドウで、「挿入」>「モジュール」をクリックし、次のコードを空のモジュールウィンドウにコピーします:

Sub GenerateRandomNumbersWithMeanStd()
    Dim outputRange As Range
    Dim meanValue As Double, stdDevValue As Double
    Dim numItems As Long, i As Long
    Dim xTitleId As String
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set outputRange = Application.InputBox("Select the output range", xTitleId, Type:=8)
    meanValue = Application.InputBox("Enter the mean value", xTitleId, "", Type:=1)
    stdDevValue = Application.InputBox("Enter the standard deviation", xTitleId, "", Type:=1)
    
    If outputRange Is Nothing Or meanValue = 0 Or stdDevValue = 0 Then
        MsgBox "Please ensure you have specified all required parameters.", vbExclamation, "KutoolsforExcel"
        Exit Sub
    End If
    
    numItems = outputRange.Count
    Randomize
    
    For i = 1 To numItems
        outputRange.Cells(i).Value = Application.WorksheetFunction.NormInv(Rnd, meanValue, stdDevValue)
    Next i
End Sub

2をクリックします。 Run button 実行 ボタン(または F5を押す)ことでマクロを起動します。ダイアログボックスが表示され、乱数を出力したい範囲を選択します(例えば、A1:A100を選択して100個の値を得る)。次に、希望する平均値と標準偏差を入力します。マクロは指定に基づいた乱数で範囲を埋めます。

ヒントとトラブルシューティング:

  • VBAは正規分布の数値を生成するためにExcelのNormInv関数を使用します — お使いのバージョンがこれをサポートしているかどうか常に確認してください。古いExcelバージョンでは、関数はNORMINVである可能性があります。
  • Randomize を使用してランダムシードを設定し、毎回異なる結果を得られます。
  • 再現可能な結果が必要な場合は、 Randomize 行をコメントアウトするか削除します。
  • マクロは選択された出力範囲内の既存のデータを上書きするため、必要な場合は空のエリアを選んでください。
  • 不適切な値(例えば、負またはゼロの標準偏差)を入力した場合、マクロは進行せず警告メッセージが表示されます。

関連記事:

最高のオフィス業務効率化ツール

🤖 Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件でのVLookup複数値でのVLookup複数シートの検索ファジーマッチ……
高度なドロップダウンリストドロップダウンリストを素早く作成連動ドロップダウンリスト複数選択ドロップダウンリスト……
列マネージャー指定した数の列を追加列の移動非表示列の表示/非表示の切替範囲&列の比較……
注目の機能グリッドフォーカスデザインビュー強化された数式バーワークブック&ワークシートの管理オートテキスト ライブラリ日付ピッカーデータの統合セルの暗号化/復号化リストで電子メールを送信スーパーフィルター特殊フィルタ(太字/斜体/取り消し線などをフィルター)……
トップ15ツールセット12 種類テキストツールテキストの追加特定の文字を削除など)50種類以上のグラフガントチャートなど)40種類以上の便利な数式誕生日に基づいて年齢を計算するなど)19 種類の挿入ツールQRコードの挿入パスから画像の挿入など)12 種類の変換ツール単語に変換する通貨変換など)7種の統合&分割ツール高度な行のマージセルの分割など)… その他多数
Kutoolsはお好みの言語で利用可能 ― 英語、スペイン語、ドイツ語、フランス語、中国語、その他40以上の言語に対応!

Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...


Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に

  • Word、Excel、PowerPointでタブによる編集・閲覧を実現
  • 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
  • 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!

全てのKutoolsアドインを一つのインストーラーで

Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。

Excel Word Outlook Tabs PowerPoint
  • オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
  • 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
  • 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
  • 30日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得