【问题标题】:Generating Exponential Random Numbers in Matlab在 Matlab 中生成指数随机数
【发布时间】:2014-03-13 17:04:29
【问题描述】:

我正在尝试在 matlab 中制作指数随机数生成器。如果我可以只使用 exprand 但不可以,生活会很轻松:(这是我想要看看它是否正确的函数。

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 是否正确,任何人都可以给我任何见解。 谢谢

【问题讨论】:

  • here。为什么不直接使用rand 而不是urv
  • rand 会给你均匀分布在 0 和 1 之间的随机值,不需要使用 URV
  • 我做URV的原因是因为我被要求用[0,1]做一个统一随机变量,我认为rand函数只做(0,1)
  • [0 1] 中的统一 RV 取值 0 或 1,概率为 0。所以不要担心 [0 1] 和 (0 1) 之间的区别,只需使用 rand

标签: matlab variables random exponential


【解决方案1】:

这是不正确的,因为您的随机数生成器无法生成某些数字,例如x=2.3^-17

【讨论】:

  • 我做URV的原因是因为我被要求用[0,1]做一个统一随机变量,我认为rand函数只做(0,1)。如果它不正确,你能帮我解决它吗?谢谢
  • 一点解释来证实你的陈述会很有帮助。
  • @JEM:我不知道有任何实用的随机数生成器可以在封闭区间内生成浮点值并匹配所有可能的双精度值。 @pjs:double 值x 不能是(2*eps)*round(...) 的结果,一个结果是低的,下一个是高的,因为round 没有任何其他可能的值
猜你喜欢
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 2017-01-08
相关资源
最近更新 更多