2013-01-22 99 views
5

Tôi đang cố gắng tạo ra 10000 số ngẫu nhiên được lấy từ bản ghi phân phối bình thường, phân phối bình thường có liên quan có nghĩa là = 0,3 và std. dev. = 0,05 trong MATLAB.Tạo số ngẫu nhiên lognormal trong MATLAB?

Tôi đang sử dụng chức năng được xây dựng trong lognrnd.

nỗ lực của tôi là phải làm:

R = lognrnd(0.3,0.05,10000,1)

Tuy nhiên, khi tôi vẽ biểu đồ của R sử dụng hist(R), cốt truyện liên quan là bình thường, không đăng nhập bình thường.

Tôi đang rối tung lên ở đâu? Nếu giá trị trung bình = 0,3 và std. dev. = 0,05 của phân phối bình thường, không nên các số log bình thường được tạo ra có giá trị trung bình = 0,3 và std. dev = 0,05?

Xin cảm ơn các bạn.

Trả lời

6

Số bạn tạo ra thực sự là từ phân phối nhật ký bình thường. Lô chỉ trông tương tự cho các thông số của bạn. So sánh hist(R) với hist(log(R)) - hình dạng khá giống nhau.

Đối với bình và độ lệch, hãy nhìn vào lognrnd documentation:

mu and sigma are the mean and standard deviation, respectively, 
of the associated normal distribution. 

do đó tạo ra con số này được dự kiến ​​sẽ có ý nghĩa khác nhau và độ lệch.

EDIT: Tôi không chắc liệu Matlab có cho phép bạn chỉ định các thông số phân phối chuẩn trực tiếp hay không, nhưng bạn có thể lấy được một tập hợp các tham số từ một tham số khác. Giả sử các thông số M và V được mong muốn của biến loga chuẩn, bạn có thể tính toán musigma sử dụng công thức sau:

x = 1 + V/M^2 
sigma = sqrt(log(x)) 
mi = log(M/sqrt(x)) 

Xem wikipedia cho chuyển đổi ngược lại.

+0

Ok - nếu tôi muốn tạo số ngẫu nhiên từ bản ghi phân phối bình thường có giá trị trung bình = 0,3 và std. dev = 0,05? – Zack

+1

Tôi muốn thêm rằng nếu bạn muốn tăng sigma của mình (ví dụ, .5) và sử dụng biểu đồ tinh tế hơn 'hist (R, 100) 'bạn sẽ thấy thứ gì đó giống như đường cong lognormal bị lệch mà bạn mong đợi. – RussH

+0

Cảm ơn bạn đã chấp nhận, nhưng tôi đã nhầm lẫn trong tính toán. Xem công thức được cập nhật (Tôi đã thử nghiệm chúng và kết quả có vẻ chính xác). – rburny