我想生成均匀分布且在[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
但我不确定它是否正确。
答案 0 :(得分:1)
我认为你在这里难以接受。函数rand
生成1到0之间的均匀分布数。区间[0,1]中任何数字出现的概率始终为100%。这意味着可以生成n
区间中[a,b]
个均匀分布的平均值(a + b)/ 2
val = (b-a) * rand(n,1) + a;
如果您想要以概率c
发生某事,那么其他事情需要1-c
次发生,例如
val = (b-a) * rand(n,1) + a;
val(rand(n,1)>c) = 0;
其中val为零。这只是零的一个例子。使用问题中给出的信息很难给出更好的答案。