我现在正在学习matlab。我在连续创建一个包含3个元素的数组时遇到了困难。 我写了一段代码
Source = randi([0,1],1,3);
给了我输出
[1,1,0] ..... [0,1,1] ...
但我愿意在输出中只得到一个1和两个零,而不是得到两个1和一个零。 我知道我错了,因为我正在使用 randi 函数,并给出0和0的随机值1和输出我得到[0,0,1] ... [1,0,0] ......也是。
我明确的问题是,如果我重复多次,只能获得一个1。例如我应该只得到[0,0,1]或[0,1,0]或[1,0,0]。
希望我能得到解决方案。 谢谢。 Ujwal
答案 0 :(得分:3)
这是使用randperm
的方式:
n = 3; %// total number of elements
m = 1; %// number of ones
x = [ones(1,m) zeros(1,n-m)];
x = x(randperm(numel(x)));
答案 1 :(得分:0)
以下是针对您的问题的几种替代解决方案。
创建零填充矩阵并将随机元素设置为一:
<span><span ng-repeat="location in mapping.locations">...</span></span>
创建x = zeros(1, 3);
x(randi(3)) = 1;
1x3
矩阵并随机eye
:
circshift