dieOff=zeros(1000,8); %make empty 1000X8 array
m = 0.9; % 90% die-off
v = 0.01;% std from experiment
mu = log((m^2)/sqrt(v+m^2)); %conver to lognorm
sigma = sqrt(log(v/(m^2)+1));
dieOff=lognrnd(mu,sigma,n,k);% generate values
dieOff(dieOff>1)=rand(); %replace with random
但是看起来rand()
仅产生1个值,并用相同的值替换所有大于1的值,这不是我想要的值。如何以整齐的格式解决此问题?
histogram(dieOff)
答案 0 :(得分:3)
rand()
给出一个数字,即您将 all 值替换为相同的随机常量。而是对每个事件使用随机数:
dieOff(dieOff>1)=rand(nnz(dieOff>1),1);
rand(n,k)
为您提供一个由0到1之间的随机数组成的 n -by- k 矩阵。rand(n)
为您提供了一个 n -by- n 随机数矩阵(即正方形),因此对于n=1
,它是单个数字。 rand()
代表rand(1)
。