Making random to work like randi
Info
This question is locked. Reopen it to edit or answer.
Show older comments
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.
Accepted Answer
More Answers (1)
idx = floor( (N_clusters-1)*rand(N_clusters,1) )+1
11 Comments
Snoopy
on 4 Aug 2025
Matt J
on 4 Aug 2025
Fine but random can imitate rand() using the 'Uniform' distribution selection (which does exist, unlike 'UniformDiscrete').
Snoopy
on 4 Aug 2025
Matt J
on 4 Aug 2025
Then replace the rand() function in my code with the random() function, invoked appropriately to create a uniform distribution.
Snoopy
on 4 Aug 2025
Matt J
on 4 Aug 2025
It should. We would have to see what you did.
Snoopy
on 4 Aug 2025
Snoopy
on 4 Aug 2025
These are the distributions that are available for the "makedist" command:
list = makedist
Snoopy
on 4 Aug 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.
Categories
Find more on Random Number Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!