Info

This question is locked. Reopen it to edit or answer.

Making random to work like randi

6 views (last 30 days)
Snoopy
Snoopy on 4 Aug 2025
Locked: Matt J on 4 Aug 2025
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

Paul
Paul on 4 Aug 2025
I wonder why makedist doesn't support Uniform Distribution (Discrete).
But random can be called with that distribution.
N_clusters = 10;
rng('default');
idx = randi(N_clusters,N_clusters,1)
idx = 10×1
9 10 2 10 7 1 3 6 10 10
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
rng('default');
random('Discrete Uniform',N_clusters,N_clusters,1)
ans = 10×1
9 10 2 10 7 1 3 6 10 10
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
  1 Comment
Snoopy
Snoopy on 4 Aug 2025
This
idx = random('Discrete Uniform',N_clusters,[N_clusters 1]);
seems to work. I wonder about the makedist too. This caused the whole confusion on my end.

More Answers (1)

Matt J
Matt J on 4 Aug 2025
Edited: Matt J on 4 Aug 2025
idx = floor( (N_clusters-1)*rand(N_clusters,1) )+1
  11 Comments
Snoopy
Snoopy on 4 Aug 2025
Yes, that is the problem and hence I am seeking a solution to that, using still the random function.
Matt J
Matt J on 4 Aug 2025
Edited: Matt J 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))
idx = 10×1
9 10 2 10 7 1 3 6 10 10
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

This question is locked.

Categories

Find more on Random Number Generation in Help Center and File Exchange

Products


Release

R2025a

Community Treasure Hunt

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

Start Hunting!