How to generate uniformly distributed random integers?

3 次查看(过去 30 天)
I've been using "ceil(4*rand)" to generate random integers from 1 to 4. But when I tried to check the uniformity, I found that I do not get a probability of 0.25 and instead have p(1)=0.24997, p(2)=0.25102, p(3)=0.24949 and p(4)=0.24951 after generating 10,00,000 values. Is it good enough to say that it's uniform?

采纳的回答

the cyclist
the cyclist 2011-7-25
Yes. You should not expect to get exactly 25% of each, every time. That is expected behavior of random numbers.
FYI, it may be more convenient for you to use the randi() function to do what you are doing.
  1 个评论
Walter Roberson
Walter Roberson 2011-7-25
the cyclist is correct. Please see also the description in http://www.mathworks.com/matlabcentral/answers/12307-how-to-generate-a-uniform-random-variable-in-the-interval-1-1-with-mean-zero

请先登录,再进行评论。

更多回答(2 个)

Pannir Selvam Elamvazhuthi
Thanks Cyclist and Walter Roberson. Sorry to have responded late.
  1 个评论
the cyclist
the cyclist 2011-8-29
No problem on the late response. However, you should consider deleting this "answer" (because it is not answer), and making it a comment on my answer.

请先登录,再进行评论。


Sergio Enrique Pinto Castillo
编辑:Sergio Enrique Pinto Castillo 2020-7-28
I think the answer is:
Num = 1000;
vec = randi([1 Num],1,Num);
This instruction generate a vector with random uniformly distributed integers between 1 and 1000

类别

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

Community Treasure Hunt

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

Start Hunting!

Translated by