Making random to work like randi
Infos
This question is locked. Rouvrir pour modifier ou répondre.
Afficher commentaires plus anciens
I have this code
idx = randi(N_clusters,N_clusters,1);
but I want to use the random function to achieve the same output. I do not get into why I want to use the random function but it is important for my work flow. So then I tried
pd = makedist('DiscreteUniform','Lower',1,'Upper',N_clusters);
idx = random(pd,N_clusters,1);
But MATLAB gives an error that "DiscreteUniform" is not recognized. What is my best alternative usinf the random function, if I stll can.
Réponse acceptée
Plus de réponses (1)
idx = floor( (N_clusters-1)*rand(N_clusters,1) )+1
11 commentaires
Snoopy
le 4 Août 2025
Matt J
le 4 Août 2025
Fine but random can imitate rand() using the 'Uniform' distribution selection (which does exist, unlike 'UniformDiscrete').
Snoopy
le 4 Août 2025
Matt J
le 4 Août 2025
Then replace the rand() function in my code with the random() function, invoked appropriately to create a uniform distribution.
Snoopy
le 4 Août 2025
Matt J
le 4 Août 2025
It should. We would have to see what you did.
Snoopy
le 4 Août 2025
Snoopy
le 4 Août 2025
These are the distributions that are available for the "makedist" command:
list = makedist
Snoopy
le 4 Août 2025
AI suggested
But that's not what I suggested to you earlier. I suggested 'Uniform'
N_clusters = 10;
rng('default');
pd = makedist('Uniform','Lower',1,'Upper',N_clusters+1);
idx = floor(random(pd,N_clusters,1))
This question is locked.
Catégories
En savoir plus sur Random Number Generation dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!