2014-03-13 191 views
0

我想在matlab中做一個指數隨機數生成器。生活會很容易,如果我可以只使用exprand但沒了:(這是我有我想看看它是否是正確的功能。在Matlab中生成指數隨機數

function x=erv(lambda)%generatae Exponential random variables 
x=(-(1/lambda)*log(urv(1)));%using the urv function from 1a 
end 

所以URV功能給我從一個隨機數[0,1]

function y=urv(howMany) %generate random numbers between [0,1] (uniform random variable), input how many RV's you want 
for k=(1:howMany) 
    y(:,k)=(2*eps)*round(rand/(2*eps)); 
end 
end 

所以任何人都可以給我任何見解,如果URV是正確的,如果ERV是正確的。 感謝名單

+0

請參閱[這裏](http://stackoverflow.com/questions/2106503/pseudorandom-number-generator-exponential-distribution)。爲什麼不直接使用'rand'而不是'urv'? –

+0

'rand'會給你0到1之間的均勻分佈的隨機值,不需要使用URV – MZimmerman6

+0

我做URV的原因是因爲我被要求用[0,1]做一個統一的隨機變量,我認爲rand函數只有(0,1) – JEM

回答

0

這是不正確的,因爲你的隨機數生成器無法生成一些數字,例如x=2.3^-17

+0

我做URV的原因是因爲我被要求用[0,1]做一個統一的隨機變量,我認爲rand函數只做(0,1)。如果這是不正確的,你能幫我修復它嗎? Thanx – JEM

+0

一些解釋證實你的陳述會有所幫助。 – pjs

+0

@JEM:我不知道任何實際的隨機數發生器,它在閉合的時間間隔內生成浮點值,並匹配所有可能的雙精度值。 @pjs:double值'x'不能是'(2 * eps)* round(...)'的結果,一個結果是低的,另一個結果是高的,沒有任何其他可能的值因爲「圓」 – Daniel