Info

This question is locked. 请重新打开它进行编辑或回答。

Making random to work like randi

6 次查看(过去 30 天)
Snoopy
Snoopy 2025-8-4
Locked: Matt J 2025-8-4
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.

采纳的回答

Paul
Paul 2025-8-4
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 个评论
Snoopy
Snoopy 2025-8-4
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.

更多回答(1 个)

Matt J
Matt J 2025-8-4
编辑:Matt J 2025-8-4
idx = floor( (N_clusters-1)*rand(N_clusters,1) )+1
  11 个评论
Snoopy
Snoopy 2025-8-4
Yes, that is the problem and hence I am seeking a solution to that, using still the random function.
Matt J
Matt J 2025-8-4
编辑:Matt J 2025-8-4
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.

类别

Help CenterFile Exchange 中查找有关 Random Number Generation 的更多信息

产品


版本

R2025a

Community Treasure Hunt

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

Start Hunting!

Translated by