Matlab 如何生成10个数字(0或1)和6个1';最多是多少?

Matlab 如何生成10个数字(0或1)和6个1';最多是多少?,matlab,Matlab,我想生成10个数字,可以是0或1,这样最多有6个1,其余的是0 如何做到这一点?您可以使用round(rand(10,1)+0.1) 调用rand(10,1)将得到10个介于0到1之间的实数;加上0.1,将预期平均值移到0.6,然后四舍五入得到0或1 如果确实要限制数组中的1数,可以重试rand()操作,直到得到6个或更少的1: num_sixes = 10; while num_sixes > 6 numbers = round(rand(10,1)+0.1); num

我想生成10个数字,可以是0或1,这样最多有6个1,其余的是0

如何做到这一点?

您可以使用
round(rand(10,1)+0.1)

调用
rand(10,1)
将得到10个介于0到1之间的实数;加上0.1,将预期平均值移到0.6,然后四舍五入得到0或1

如果确实要限制数组中的1数,可以重试
rand()
操作,直到得到6个或更少的1:

num_sixes = 10;

while num_sixes > 6
    numbers = round(rand(10,1)+0.1);
    num_sixes = sum(numbers);
end

numbers % this will contain at most six 1s

使用初始化所需矩阵。然后使用生成您将获得的1的数量,并获得这些1的随机索引。最后,将这些索引处的0替换为1

N = 10;                %Total numbers to be generated
max1s = 6;             %Maximum number of 1s
ReqNum = zeros(N,1);   %Initialising with 0's
idx_of_1s = randperm(N, randi([1 max1s],1,1)); %Generating maximum 'max1s' indices for 1's
ReqNum(idx_of_1s) = 1; %Changing 0's at those indices to 1's

你能提供更多的信息吗?您是否也在寻找介于
0.47
之间的浮点数,还是只需要0和1?我只需要0和1,然后生成随机数。如果数字大于0.4,则选择1,否则选择0。要获得60%的概率,是否要生成10个随机数,其中6个为1,其余为0?这完全改变了情况,但这是一个容易解决的问题。以60%的概率生成一个,并不意味着你必须从10个中得到6个。它甚至可以得到所有的1,甚至所有的0。你说最多六个1是什么意思?最低限度是多少?零1?先生,实际上我想要这种类型的数组,或者是10 1 0 1 1 0 1 0 1(其中1的数量是6)或者是11 1 0 0 0 0 0 0 0 0 0(其中1的数量是3,即小于6),但不是像这样的10 1 0 1 0 1 1 1 1 1 1 1(其中1的数量是7)你试过代码吗?它能满足你的要求。数组将存储在
numbers
中。是的,先生,我尝试了上述代码,但未执行。您只需在命令行或脚本中键入
numbers
。我已经更新了答案中的代码,让它显示数组。如果要生成大量数字,这可能会导致性能下降