How do I create a single random number between two values?
Mostrar comentarios más antiguos
I need to create a value for one of my variables in a loop which will run ten times. I need it to be between two set values, e.g. 1e3 and 9e3. Sorry for what is probably a very basic question but I am new to matlab.
1 comentario
Kabeer Akande
el 17 de Sept. de 2015
1e3 + (1e9-1e3).*rand(1,1);
Respuesta aceptada
Más respuestas (3)
Image Analyst
el 22 de Mzo. de 2012
The help facility is always a good place to start. If you had searched the help for rand, you would have seen the very first example:
Example 1
Generate values from the uniform distribution on the interval [a, b]:
r = a + (b-a).*rand(100,1);
6 comentarios
Marvin
el 22 de Mzo. de 2012
Nathan Greco
el 22 de Mzo. de 2012
rand(100,1) means create a random matrix of size [100x1] of values on the open interval of (0,1).
Image Analyst
el 22 de Mzo. de 2012
I agree that it might have been confusing since they didn't say what the 100 was right there in the example. You can send an email to support@mathworks.com if you find their documentation confusing. Perhaps they can change the wording to make it more clear. For example, tell them it should say "Generate 100 values from the uniform distribution on the interval [a, b]"
Andrew Sol
el 13 de Mzo. de 2023
And how to make it so that the minimum and maximum are included in the generated series of numbers?
@Andrew Sol Since they will not be there (infinitesimally small chance) if you're just getting random numbers, you will have to add them in manually: Somthing like:
% Generate values from the uniform distribution on the interval [a, b]:
a = 5;
b = 10;
numElements = 7;
r = a + (b-a).*rand(numElements,1);
% Add in the max and min
r = [a; b; r];
% Scramble the array so they are not at the beginning
scrambledIndexes = randperm(numel(r));
r = r(scrambledIndexes)
Andrew Sol
el 13 de Mzo. de 2023
@Image Analyst Thank you very much for your answer! it's really not that complicated
Aldin
el 22 de Mzo. de 2012
0 votos
It's very helpful.
Nisha Bharti
el 12 de En. de 2022
0 votos
To generate a random number between [a,b]:
r = a + (b-a)*rand();
To generate N numbers:
r = a + (b-a)*rand(1,N);
Categorías
Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!