Borrar filtros
Borrar filtros

sample (with replacement) random integers all range included

1 visualización (últimos 30 días)
K G
K G el 24 de Oct. de 2015
Editada: Andrei Bobrov el 24 de Oct. de 2015
hello,
I want to create a vector X of n uniformly random integers from a range [0 m] without missing any of the numbers between 0 and m.
for example:
n=10 m=3
I want X to contain 10 integers with values 0, 1, 2, 3 and I want all of them to appear at least one time.
i.e. the following vector is not allowed: [3 3 0 1 1 0 3 1 1 0] because it doesn't contain the number "2" at least one time
Is there a matlab function doing that? or I have to create one?
Thanks.

Respuestas (1)

Andrei Bobrov
Andrei Bobrov el 24 de Oct. de 2015
Editada: Andrei Bobrov el 24 de Oct. de 2015
out = randi([0,m],n,1);
t = 0:m;
N = histcounts(out,[t,m]);
l0 = N==0;
if any(l0)
[~,ii] = max(N);
jj = find(out == t(ii));
out(jj(1:nnz(l0))) = t(l0);
end

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by