Генерировать случайное число от 1 до 10, за исключением одного числа в matlab
Я хотел бы создать случайное число от 1 до 10, используя, например, randi([1,10]), но я хотел бы исключить одно число, например 7 - это число всегда будет меняться и указываться в переменной с именем b.
Возможно ли это сделать?
Ответ 1
Используйте 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));
Ответ 2
Для тех, у кого нет инструментария статистики:
b = 7;
pop = 1:10;
pop(b) = [];
затем
pop(randperm(9,1))
или для n случайных целых чисел из популяции:
pop(randi(numel(pop), 1, n))
Ответ 3
Как упоминалось в @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,