【发布时间】:2015-03-10 16:58:07
【问题描述】:
我想生成均匀分布且在 [a b] 范围内的噪声,并且以 c 的概率发生,否则为零
我有一种方法
x = rand(1,n);
y = zeros(1,n);
for i = 1:n
if x(i) > 1-c
y(i) = rand()*(b-a)+a;
end
end
但我不确定它是否正确。
【问题讨论】:
-
“以 c 的概率均匀发生”是什么意思?
-
我不知道你想实现什么,但你可以用
x = rand(1,n)<c; y = zeros(1,n); y(x)=rand(size(y(x))).*(b-a)+a替换它,这对于大 n 来说要快得多,并且效果相同。 -
rand已经在均匀分布(又名等概率)下生成随机数。你所拥有的是正确的,但请使用 Daniel 的方法并将其矢量化。 -
@Daniel 我不确定,但我认为 OP 希望 70% 的值在此区间内并均匀分布。我不确定他想对其余的值做什么,所以当 OP 告诉我们 x 时,问题可能会变得更加复杂。刚刚意识到我的答案与您的评论相似。只需发送一个答案,然后我将删除我的。
-
我想生成均匀分布且在 [a b] 范围内并且以 c 的概率发生的噪声。否则为零
标签: matlab random floating-point numbers