The MATLAB random number generator allows you to create uniformly distributed random numbers, which can be useful for simulations and statistical analysis. Here’s a simple code snippet to generate five random numbers between 0 and 1:
randomNumbers = rand(1, 5);
Understanding Random Numbers in MATLAB
What is a Random Number?
A random number can be defined as a value generated in a way that cannot be reasonably predicted. In programming, random values are crucial for simulating uncertainty and unpredictability. For instance, random numbers play pivotal roles in fields such as statistics, simulations, cryptography, and gaming. Most importantly, the random numbers generated by computers are actually pseudo-random, meaning they are generated using deterministic algorithms but can mimic randomness.
Importance of Random Number Generators (RNG)
Random Number Generators (RNGs) are essential components in various applications where randomness is key. For example, they are widely used in:
- Statistical Sampling: Helping researchers select random samples from a population.
- Simulation and Modelling: In scenarios such as Monte Carlo simulations, where random sampling is used to estimate outcomes.
- Cryptography: Generating secure random keys for encryption algorithms.
- Gaming: Creating unpredictable elements to enhance user experience.

MATLAB's Random Number Generation Functions
MATLAB provides a robust set of built-in functions to generate random numbers, including `rand()`, `randi()`, and `randn()`. These functions serve as the foundation for handling randomness in simulations and algorithmic applications.
Using the `rand()` Function
The `rand()` function in MATLAB generates random numbers uniformly distributed in the interval (0, 1).
Syntax:
rand(n)
rand(m, n)
Example Code Snippet:
% Generate a single random number
random_number = rand();
disp(random_number);
% Generate a 3x3 matrix of random numbers
random_matrix = rand(3, 3);
disp(random_matrix);
The values produced by `rand()` can be used directly in simulations or calculations where uniform distribution is required. Ensure to understand the range, as the output will always be within 0 to 1, which can affect calculations requiring different ranges.
Using the `randi()` Function
The `randi()` function generates uniformly distributed random integers. This function is particularly useful when only integer values are desired.
Syntax:
randi(imax, n)
randi([a, b], m, n)
Example Code Snippet:
% Generate a random integer between 1 and 10
random_integer = randi(10);
disp(random_integer);
% Generate a 2x2 matrix of random integers between 1 and 10
random_integer_matrix = randi(10, 2, 2);
disp(random_integer_matrix);
The flexibility of the `randi()` function allows you to specify both the maximum integer and the dimensions of the output matrix. This makes it valuable for scenarios where the randomness needs to conform to specific integer ranges.
Using the `randn()` Function
The `randn()` function generates random numbers from a standard normal distribution with a mean of 0 and a standard deviation of 1.
Syntax:
randn(n)
randn(m, n)
Example Code Snippet:
% Generate a single random number from a standard normal distribution
normal_random_number = randn();
disp(normal_random_number);
% Generate a 4x4 matrix of random numbers from a standard normal distribution
normal_random_matrix = randn(4, 4);
disp(normal_random_matrix);
Using `randn()` is crucial in scenarios where you're modeling real-world phenomena that follow a normal distribution. It allows you to create datasets that reflect natural variability accurately.

Seeding the Random Number Generator
Why Seed Random Numbers?
Seeding a random number generator is essential for ensuring that random sequences can be replicated exactly. When the RNG is seeded with a specific value, it will produce the same sequence of random numbers every time.
How to Seed in MATLAB
In MATLAB, you can seed the random number generator using the `rng()` function.
Command:
rng(seed_value)
Example Code Snippet:
% Set the seed for reproducibility
rng(1);
% Generate random numbers after seeding
seeded_random_matrix = rand(2,2);
disp(seeded_random_matrix);
By setting the seed, any subsequent calls to the random number functions will yield the same output across sessions, which is critical for debugging and testing.

Generating Random Numbers with Custom Distributions
Introduction to Custom Distributions
While the built-in functions cover many common needs, there are times when you require random numbers that adhere to a specific distribution beyond uniform or normal.
Using `makedist()` and `random()`
MATLAB allows for the creation of custom probability distributions using the `makedist()` function, followed by drawing samples with the `random()` function associated with that distribution.
Example Code Snippet:
% Create a custom normal distribution with mean 5 and standard deviation 2
pd = makedist('Normal', 'mu', 5, 'sigma', 2);
custom_random_numbers = random(pd, 1, 10);
disp(custom_random_numbers);
This capability to create custom distributions opens up new avenues for simulations and research scenarios that necessitate specific characteristics in the randomness of generated numbers.

Visualizing Random Numbers
Plotting Random Numbers
Visualizing the random numbers generated is essential for understanding their distribution and evaluating the effectiveness of the random number generation process. Histograms are an excellent way to depict this.
Example Code Snippet:
% Generate 1000 random numbers from a normal distribution
data = randn(1000, 1);
% Create a histogram to visualize the distribution
histogram(data, 30);
title('Histogram of Random Numbers from a Normal Distribution');
Through visualizations, you can verify whether the random numbers conform to expected distributions, enhancing the reliability of your data-driven conclusions.

Conclusion
In this guide, we have explored the MATLAB random number generator and its various functions, including how to generate uniform and normal distributed numbers, the importance of seeding, and creating custom distributions. We encourage you to practice with these random number functions to deepen your understanding and explore their application potential more effectively.