np.random.rand() and random arrays in NumPy - Time & Space Complexity
We want to understand how the time to create random arrays grows as the array size increases.
How does the work done by np.random.rand() change when we ask for bigger arrays?
Analyze the time complexity of the following code snippet.
import numpy as np
# Create a random array of size n
n = 1000
random_array = np.random.rand(n)
This code creates a one-dimensional array of length n filled with random numbers between 0 and 1.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Generating each random number independently.
- How many times: Exactly
ntimes, once for each element in the array.
As the array size n grows, the number of random numbers generated grows linearly.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 random number generations |
| 100 | 100 random number generations |
| 1000 | 1000 random number generations |
Pattern observation: Doubling the size doubles the work needed.
Time Complexity: O(n)
This means the time to create the array grows directly in proportion to the number of elements requested.
[X] Wrong: "Generating a random array is constant time because it's just one function call."
[OK] Correct: The function call creates many random numbers, one for each element, so the time grows with the array size.
Understanding how random data generation scales helps you reason about data preparation steps in real projects and interviews.
"What if we generate a 2D array with shape (n, n) using np.random.rand(n, n)? How would the time complexity change?"
Practice
np.random.rand(3, 2) do in NumPy?Solution
Step 1: Understand np.random.rand() function
This function generates random floats between 0 and 1.Step 2: Analyze the shape arguments (3, 2)
The arguments specify the shape of the output array as 3 rows and 2 columns.Final Answer:
Creates a 3x2 array with random floats between 0 and 1 -> Option AQuick Check:
np.random.rand(3, 2) = 3x2 random floats [OK]
- Thinking it creates integers instead of floats
- Confusing shape arguments with array values
- Assuming it creates zeros or ones
np.random.rand()?Solution
Step 1: Recall correct function call syntax
Functions use parentheses () to pass arguments, not brackets [] or braces {}.Step 2: Check argument for array size
Passing 5 inside parentheses creates a 1D array of length 5.Final Answer:
np.random.rand(5) -> Option AQuick Check:
Correct function call uses parentheses ( ) [OK]
- Using square brackets [] instead of parentheses
- Using curly braces {} which are invalid syntax
- Adding extra parentheses unnecessarily
import numpy as np arr = np.random.rand(2, 4) print(arr.shape, type(arr))
Solution
Step 1: Understand np.random.rand(2, 4) output
This creates a NumPy array with shape (2, 4) filled with random floats.Step 2: Check the type of the variable arr
It is a NumPy ndarray, not a Python list.Final Answer:
(2, 4) <class 'numpy.ndarray'> -> Option CQuick Check:
Shape and type match NumPy array output [OK]
- Confusing shape order (2,4) vs (4,2)
- Thinking output is a Python list
- Misreading print output format
import numpy as np arr = np.random.rand[3, 3] print(arr)
Solution
Step 1: Check function call syntax
np.random.rand is a function and must be called with parentheses (), not square brackets [].Step 2: Verify other parts of code
Import is correct, print syntax is valid, shape arguments are integers as required.Final Answer:
Using square brackets [] instead of parentheses () for function call -> Option DQuick Check:
Function calls need parentheses ( ) [OK]
- Using [] instead of () for function calls
- Assuming shape args must be strings
- Thinking print syntax is wrong
Solution
Step 1: Create a 3x4 array of random floats
Use np.random.rand(3, 4) to get a 2D array with 3 rows and 4 columns.Step 2: Scale all values by 10
Multiply the entire array by 10 to scale values from [0,1) to [0,10).Final Answer:
arr = np.random.rand(3, 4) * 10 -> Option BQuick Check:
Shape and scaling done correctly [OK]
- Adding 10 instead of multiplying
- Using wrong shape arguments
- Creating 1D array instead of 2D
Ready to prove it?
Pass the test and this pattern moves unknown
