2012-01-25 4 views
-1

Я хотел бы генерировать нормальный дистрибутив журнала, чтобы использовать его в моем коде на Python, который изменил бы скорость, с которой я попал на сервер. может ли кто-нибудь помочь мне в создании того же.генерация нормального распределения журнала с использованием R

+6

Вы хотите генерировать случайные значения из логарифмически нормального распределения? Вы знаете, как создавать случайные значения из нормального распределения? Ваше название вопроса предполагает, что вы используете R, но сам вопрос предлагает python. Можете ли вы уточнить, хотите ли вы использовать python или R? – Dason

+0

Нет, я не знаю, как создать значения из нормального дистрибутива. Я хочу использовать R для генерации случайных значений и использовать Rpy-пакет для использования этих значений в моем коде на Python. – Koushik

ответ

3

В R вы можете использовать rlnorm, но почему бы вам не использовать numpy и сделать это прямо в Python.

Посмотрите на этот документ: http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.lognormal.html

+0

Большое спасибо. Я посмотрю на это, и если у меня появятся какие-то дальнейшие вопросы, я вернусь к вам. – Koushik

5

Если ваше сердце не устанавливается на использовании R нет никакой необходимости для внешних библиотек. Встроенный Python random module хорошо подходит для общего использования. Он может генерировать случайные числа из множества общих распределений.

import math 
import random 

#generate 10k lognormal samples with mean=0 and stddev=1 
samples = [random.lognormvariate(0,1) for r in xrange(10000)] 

#demonstrate the mean and stddev are close to the target 
#compute the mean of the samples 
log_samples = [math.log(sample) for sample in samples] 
mu = sum(log_samples)/len(samples) 
#compute the variance and standard deviation 
variance = sum([(val-mu)**2 for val in log_samples])/(len(log_samples)-1) 
stddev = var**0.5 

print('Mean: %.4f' % mu) 
print('StdDev: %.4f' % stddev) 

#Plot a histogram if matplotlib is installed 
try: 
    import pylab 
    hist = pylab.hist(samples,bins=100) 
    pylab.show() 

except: 
    print('pylab is not available') 

Если вы используете Rpy2 это поможет вам начать:

import rpy2.robjects as robjects 

#reference the rlnorm R function 
rlnorm = robjects.r.rlnorm 

#generate the samples in R 
samples = rlnorm(n=10000, meanlog=1, sdlog=1) 
+0

благодарю вас. Очень. Скажите, пожалуйста, скажите мне, как это сделать в R – Koushik

+0

Я добавил пример Rpy2, обратитесь к Rpy2 [documentation] (http://stat.ethz.ch/R-manual/R- patched/library/stats/html/Lognormal.html) и R [documentation] (http://stat.ethz.ch/R-manual/R-patched/library/stats/html/Lognormal.html) – tharen

Смежные вопросы