在概率c出现的[a b]之间生成均匀分布的随机数

时间:2015-03-10 16:58:07

标签: matlab random floating-point numbers

我想生成均匀分布且在[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

但我不确定它是否正确。

1 个答案:

答案 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为零。这只是零的一个例子。使用问题中给出的信息很难给出更好的答案。