質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

469閲覧

自作した確率密度による確率分布に従うランダムなデータをn件生成するには?

sealy

総合スコア45

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/06/06 08:19

編集2023/06/06 08:20

ある連続型の確率分布を定める、任意の確率密度をPythonで実装した関数 f(x) が与えられるものとします。たとえば標準正規分布だったら以下のようなものです。

python

1from math import pi 2from math import exp 3 4def f(x): 5 return (1/(2*pi)**0.5) * exp(-0.5*(x**2))

上記のような何らかの確率密度を実装した関数 f(x) が与えられたときに、この f とデータ件数を表す n をパラメータとして受け取り、f(x) による確率分布に従う乱数をn個生成して、それらを要素として含むリストを返すような関数を実装するにはどうしたらよいでしょうか?

コードでなくても、考え方や参照すべきサイトなどをご教示頂ければ助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ChatGPTの回答

SciPyライブラリを使用することで、より効率的に確率分布に従う乱数を生成することができます。具体的には、SciPyのstatsモジュールを活用します。
以下は、SciPyを使用して確率分布に従う乱数を生成するコード例です。

Python

1import numpy as np 2from scipy import stats 3 4def f(x): 5 return (1/(2*np.pi)**0.5) * np.exp(-0.5*(x**2)) 6 7def generate_random_numbers(f, n): 8 # 確率分布を表すrv_continuousオブジェクトを作成 9 distribution = stats.rv_continuous() 10 distribution._pdf = f # 確率密度関数を設定 11 12 # 乱数生成 13 random_numbers = distribution.rvs(size=n) 14 15 return random_numbers 16 17ret = generate_random_numbers(f, 100)

このコードでは、rv_continuousクラスを使用してカスタムの連続確率分布を作成し、その分布に従う乱数を生成しています。_pdf属性に確率密度関数fを設定することで、任意の確率密度関数を扱うことができます。
rvsメソッドを使用して、指定されたサイズnの乱数を生成しています。

エラーなくコードが実行できることは確認できましたが、結果の妥当性は未確認(分からない)です。

投稿2023/06/06 08:31

編集2023/06/06 08:31
can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sealy

2023/06/06 08:40

ありがとうございます scipy.stats.rv_continuous() を知らなかったです m(_ _)m
bsdfan

2023/06/07 00:41

scipy.stats.rv_continuous はサブクラスを作って使うっぽくて、そういう例のほうが多いのに、ChatGPT がどこからこの回答のようなコードを学習してきたかのほうが気になります・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問