2017-10-15 10 views
-1

例えば、年齢と1週間のスタックオーバーフローに費やされた時間数のようなデータを生成しようとしています。私はrandn関数を使ってみましたが、生成される値の範囲と値の量子化を制御することはできません。私はボックスマラー法のようないくつかのアルゴリズムを試しましたが、同じ問題が発生します。 2つの均一な変量を生成することができますが、正規分布の値をどのように制御できますか?誰かが私に説明することができます、どのように私はこれをPythonで行うことができますか?Pythonは正規分布の疑似データを生成します

+0

あなたは、「値の量子化」とはどういう意味ですか? – user8153

+0

年齢を12.3歳にしたくない場合は、時間が0.5時間の倍数になるような整数でなければなりません。@ user8153 – user8778850

+0

[this](https://stackoverflow.com/questions/36894191/)助けて? –

答えて

0

私は、これはあなたが探しているものだと思う:

def get_truncated_normal(mean=0, sd=1, low=0, upp=10): 
    return truncnorm(
     (low - mean)/sd, (upp - mean)/sd, loc=mean, scale=sd) 

X = get_truncated_normal(mean=15, sd=2, low=0, upp=1000) 
a=(X.rvs(100)) 
0

ナンシーズrandom.normalはトリックを行います。中央値、SD、希望のサイズを指定する必要があります。

import numpy as np 
import matplotlib.pyplot as plt 
import scipy.stats as stats 

M = 25 
SD = 5 
n = 100 
age = np.random.normal(M, SD, n) 
sorted_age = sorted(age) 

pdf = stats.norm.pdf(sorted_age, M, SD) 
plt.plot(sorted_age, pdf) 
plt.show() 

enter image description here

+0

それは私の質問 – user8778850

+0

の答えではありません私は欲しいものは、特定の範囲にあることがpdfとは、年齢は12歳から50歳までの自然数です。私は年齢の実際の値が必要です – user8778850

1

私は2つの変数が独立していることを前提としています。これはちょうど時代をやるための一つの方法です。

>>> import numpy as np 

位置とサイズ50のランダム、単変量正常サンプルを生成し、廃棄がゼロ未満の値の両方30.

>>> ages = np.random.normal(30,30,50) 

をスケーリングします。一定のサンプルサイズが必要な場合は、少し賢明なやり方をする必要があります。

>>> ages = [age for age in ages if age>=0] 

最大のビン境界線が必要であるかどうかを知るには、最大の年齢値を取得します。

>>> max(ages) 
90.513300401178611 

最後のビンの境界が最大の年齢を収容するのに十分な大きさであることを確認し

>>> bins = np.arange(0,92,1) 

など、2まで、0から1に、先の年齢を割り当てるためにビンを作成します1。

>>> max(bins) 
91 

年齢をビンに割り当てます。

>>> sample = np.digitize(ages, bins) 

表示結果。

>>> sample 
array([20, 82, 73, 21, 7, 39, 56, 23, 37, 15, 9, 21, 46, 6, 51, 13, 89, 
     47, 46, 4, 78, 33, 29, 26, 74, 72, 62, 52, 2, 48, 39, 91, 40, 38, 
     40, 12, 59, 77, 52, 65, 35, 69, 31, 74, 18], dtype=int64) 
+0

なぜこの質問は下降しますか?あなたは私に完璧な答えを与えました – user8778850

+0

おそらく、自分で問題を解決しようとしたコードを表示していなかったからです。私は推測しているだけです。投票者が抗議していることを知るのはとても難しいので、私は投票を嫌う。実際、あなたが私のプロフィールを見ると、あなたは一度だけダウン投票したことがわかります。 –

関連する問題