例如,我想生成一个介于 1 和 10 之间的随机数,randi([1,10])
但我想排除一个数字,比如 7 - 这个数字总是会改变并在一个名为b
.
有可能以某种方式做到吗?
使用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));
For those without the statistics toolbox:
b = 7;
pop = 1:10;
pop(b) = [];
then
pop(randperm(9,1))
or for n
random integers from the population:
pop(randi(numel(pop), 1, n))
正如@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
或者类似地,如果@EitanT 提到的“randsample”函数不可用,
v = [1:b-1,b+1:10];
x = v(ceil(numel(v) * rand));