采样在间隔内获得成功数量

1查看(最近30天)
缺口
缺口 于2020年5月14日
我想创建一个n行的zeroes阵列和1代表20个双位等等遗传基因座的值,其中1个随机分配给40个可能的位置(列)..但我需要有1的总数不超过min,不大于max。例如,假设我希望平均数量为12(占40个总所有等位基因的30%),但我希望该号码是最少的10,最多14个。只是在[0,1] wiht上的统一随机成功= 0.3的概率将无法工作,因为单个行可能少于最小1或超过最大1。

接受答案

Ameer Hamza.
Ameer Hamza. 20月15日
编辑:Ameer Hamza. 20月15日
尝试这个
n = 100;
n_cols = 40;
min_val = 10;
max_val = 14;
mean_val =(min_val + max_val)/ 2;
num_ones = randi([min_val max_val],n,1);
m = zeros(n,n_cols);
为了我= 1:n
idx = randperm(40,num_ones(i));
m(i,Idx)= 1;
结尾
测试它产生所需的1S分配
>> row_sum = sum(m,2);所有行的百分比
>> min(row_sum)
ans =.
10.
>> max(row_sum)
ans =.
14.
>>均值(row_sum)
ans =.
12.0100.

更多答案(0)

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!