我想使用例如randi([1,10])
生成1到10之间的随机数,但我想排除一个数字,比如说7 - 这个数字总是会改变并在名为{{的变量中指定1}}。
这可能以某种方式吗?
答案 0 :(得分:18)
使用randsample
。例如,要生成1到10之间的数字(不包括7),请执行以下操作:
b = 7;
x = randsample(setdiff(1:10, b), 1);
此处setdiff
用于从向量b
中排除1:10
的值。
如果您没有安装统计工具箱,则无法使用randsample
,因此请使用rand
:
v = setdiff(1:10, b);
x = v(ceil(numel(v) * rand));
答案 1 :(得分:5)
对于那些没有统计工具箱的人:
b = 7;
pop = 1:10;
pop(b) = [];
然后
pop(randperm(9,1))
或来自人口的n
个随机整数:
pop(randi(numel(pop), 1, n))
答案 2 :(得分:1)
正如@EitanT所提到的,你可以使用randsample
这样做,但我认为以更简单的方式这样做应该适合你:
>> b = 7;
>> randsample([1:b-1,b+1:10],1)
这只是对数组[1:b-1,b+1:10]
中的随机值进行采样,这将是
1 2 3 4 5 6 8 9 10
或者类似地,如果'randsample'函数不可用,如@EitanT所提到的那样,
v = [1:b-1,b+1:10];
x = v(ceil(numel(v) * rand));