Lessons

NumPy Tutorial

NumPy Random in Python

What are Random Numbers?

Random numbers are values generated without any predictable pattern. They are widely used in simulations, cryptography, machine learning, and data analysis.

Pseudo-Random vs. True Random Numbers

  • True Random Numbers: These are generated using physical processes like radioactive decay or atmospheric noise. Since they rely on external factors, they are truly unpredictable.
  • Pseudo-Random Numbers: These are generated using mathematical algorithms, which makes them deterministic. Although they appear random, they are reproducible if the initial seed value is known.

In programming, we typically use pseudo-random numbers as they are efficient and sufficient for most applications.

How to Generate Random Numbers with NumPy?

NumPy provides the numpy.random module, which contains various functions to generate random numbers efficiently.

1. Random Sampling (numpy.random)

Syntax:

python
1
2
import numpy as np
np.random.random(size=None)

Parameters:

  • size (optional): Specifies the shape of the output array.

Returns:

  • A single float or an array of random values between 0.0 and 1.0.

Example:

python
1
2
3
np.random.random()  # Single random float
np.random.random(5)  # 1D array with 5 random values
np.random.random((2,3))  # 2D array of shape (2,3)

2. Random Choice (numpy.random.choice)

Syntax:

np.random.choice(a, size=None, replace=True, p=None)

Parameters:

  • a: Array or integer range from which to sample.
  • size (optional): Number of elements to pick.
  • replace: If True, elements can be selected multiple times.
  • p: Probabilities associated with each element.

Returns:

  • A single value or an array of randomly selected elements.

Example:

python
1
2
np.random.choice([1, 2, 3, 4, 5])  # Pick one random value
np.random.choice([1, 2, 3, 4, 5], size=3)  # Pick 3 random values

3. Random Integers (numpy.random.randint)

Syntax:

np.random.randint(low, high=None, size=None, dtype=int)

Parameters:

  • low: Lowest integer to be drawn.
  • high (optional): Upper bound (exclusive).
  • size: Output shape.
  • dtype: Data type of the output.

Returns:

  • A single integer or an array of random integers.

Example:

python
1
2
np.random.randint(1, 10)  # Random integer between 1 and 9
np.random.randint(1, 10, size=5)  # 1D array of 5 random integers

4. Generating Random Float Values

Syntax:

np.random.uniform(low=0.0, high=1.0, size=None)

Parameters:

  • low: Lower bound.
  • high: Upper bound.
  • size: Output shape.

Returns:

  • A single float or an array of uniformly distributed random values.

Example:

python
1
2
np.random.uniform(2.0, 5.0)  # Random float between 2.0 and 5.0
np.random.uniform(0, 10, size=3)  # 1D array with 3 random floats

5. Generating a Random Array

Syntax:

np.random.rand(d0, d1, ..., dn)

Parameters:

  • d0, d1, ..., dn: Shape of the output array.

Returns:

  • A multi-dimensional array of random values between 0.0 and 1.0.

Example:

python
1
np.random.rand(2, 3) # 2x3 array with random values

Summary

NumPy provides efficient ways to generate random numbers for different use cases. Here’s a quick recap:

  • random.random() - Generates random float(s) between 0.0 and 1.0.
  • random.choice() - Selects random elements from an array.
  • random.randint() - Generates random integers within a range.
  • random.uniform() - Generates random floats in a specified range.
  • random.rand() - Generates a random array.

Frequently Asked Questions