我有这行代码,它定义了所选区域内一定数量的代理
obj.agents = randi([0 1],obj.width, obj.height);
我想控制这个参数,这样我就有一定比例的0和1随机分布在区域内,比如0的30%和1的70%,反之亦然(所以它们仍然是随机分布的,但一个比另一个大(。
有什么相对简单的方法吗?
将其初始化为一的矩阵,然后用零替换随机的30%索引。
obj.agents = ones(obj.width, obj.height);
inds = randperm(obj.width*obj.height, 0.3*obj.width*obj.height);
obj.agents(inds) = 0;
注意事项:如果30%不是整数,则必须使用其中一个:ceil
、floor
、round
或fix
;适合你需要的