Arrays 如果值>;则用随机数替换数组中的值;1.
我有一个由对数正态分布生成的值数组(1000 x 8),表示一小时后表面上细菌死亡的百分比。问题是有些值大于100%,所以我想用0到1之间的随机值替换它们Arrays 如果值>;则用随机数替换数组中的值;1.,arrays,matlab,random,Arrays,Matlab,Random,我有一个由对数正态分布生成的值数组(1000 x 8),表示一小时后表面上细菌死亡的百分比。问题是有些值大于100%,所以我想用0到1之间的随机值替换它们 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
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)
rand()
给出一个数字,即用相同的随机常数替换所有值。相反,对每个事件使用一个随机数:
dieOff(dieOff>1)=rand(nnz(dieOff>1),1);
rand(n,k)
提供了一个0到1之间的n×k随机数矩阵rand(n)
提供了一个n乘n的随机数矩阵(即平方),因此对于n=1
而言,它是一个单一的数字rand()
是rand(1)
rand()
的缩写,它给出一个单一的数字,即用相同的随机常数替换所有值。相反,对每个事件使用一个随机数:
dieOff(dieOff>1)=rand(nnz(dieOff>1),1);
rand(n,k)
提供了一个0到1之间的n×k随机数矩阵rand(n)
提供了一个n乘n的随机数矩阵(即平方),因此对于n=1
而言,它是一个单一的数字rand()
是rand(1)
的缩写