MATLAB Answers

How I generate a random number between 300 and 450?

25 views (last 30 days)
zeezo
zeezo on 19 Oct 2017
Commented: Star Strider on 12 Nov 2017
Hi
I would like to generate a number between 300 and 450.
I also would like which is the possible ways to generate numbers on Matlab? Is there a Poisson generator for random numbers?
And what does the initial seed mean?
Thank you for your help.

  1 Comment

Jan
Jan on 19 Oct 2017
Do you mean integer or floating point numbers?

Sign in to comment.

Accepted Answer

Bora Eryilmaz
Bora Eryilmaz on 12 Nov 2017
You can create a "truncated" Poisson distribution that is based on the regular Poisson distribution, but with its range truncated to a given interval and its probability density function (PDF) adjusted so that the distribution remains a proper one (i.e., its integral over the truncation range equals 1).
For example, to generate numbers in the range [300, 450] from a truncated Poisson distribution, you could use
% Regular Poisson distribution
lambda = (300+450)/2; % To put the mean in the middle of the range
d = makedist('poisson', 'lambda', lambda)
% Truncated Poisson distribution
td = d.truncate(300, 450)
td.random(10,1) % Generate 10 random numbers in the range [300 450]

  3 Comments

Star Strider
Star Strider on 12 Nov 2017
Is this:
% Truncated Poisson distribution
td = d.truncate(300, 450)
td.random(10,1) % Generate 10 random numbers in the range [300 450]
documented somewhere?
I can’t find any reference or links to it in the R2017b documentation for makedist.
Walter Roberson
Walter Roberson on 12 Nov 2017
Object methods can (usually) be coded as either
MethodName(Object, parameter, parameter2, ...)
or as
Object.MethodName(parameter, parameter2, ...)
Star Strider
Star Strider on 12 Nov 2017
Thanks, Bora and Walter.
I had no idea it was possible to truncate a distribution and still have it maintain the properties of a distribution.
I also thought I knew my way around the documentation and the essentials of the Toolboxes!

Sign in to comment.

More Answers (2)

KL
KL on 19 Oct 2017
Edited: KL on 19 Oct 2017
randi([300 450])

  5 Comments

Show 2 older comments
zeezo
zeezo on 19 Oct 2017
I tried to use poissrnd but I couldn't generate a number between the two values.
Jan
Jan on 19 Oct 2017
@Guillaume: I appreciate the "your favorite search engine". You take care for not advertising a commercial service, which we do not pay by money, but by our personal data. Thanks!
@zeezo: All details are explained exhaustively in the documentation. To use Matlab reliably, you have to read there at first.
zeezo
zeezo on 19 Oct 2017
@jan I did read the documentation before I post my question, but because I do not understand the details I asked here. If you see that my question is easy, that because I am a beginner on Matlab. :(
Thank you very much

Sign in to comment.


Guillaume
Guillaume on 19 Oct 2017
Edited: Guillaume on 19 Oct 2017
I would like to generate a number between 300 and 450
I tried to use poissrnd but I couldn't generate a number between the two values.
A poisson distribution is defined over the range [0, Inf] and has only one parameter lambda (mean and variance). You cannot have a set of numbers that follow a poisson distribution and at the same time is restricted to a smaller range than [0 Inf].
You could generate random numbers that follow a poisson distribution with mean (300+450)/2, but you are guaranteed that with enough samples some of these will be out of the interval. Otherwise it is not a poisson distribution anymore.

  1 Comment

Image Analyst
Image Analyst on 19 Oct 2017
Exactly correct. But if you, say, generated a million Poisson numbers between 0 and (say) 5000, and then threw them all away except those that landed between 300 and 450, it's not really Poisson anymore, is it? Indeed, it might even look rather uniform.

Sign in to comment.

Sign in to answer this question.


Translated by