📖 Scenario: Imagine you are a scientist studying the heights of plants in a garden. You want to understand how the average height changes when you take different random samples from the garden.
🎯 Goal: You will create a list of plant heights, set a sample size, take many random samples from the list, calculate the average height for each sample, and finally display the list of these sample averages.
📋 What You'll Learn
Create a list called plant_heights with exact values: 10, 15, 14, 20, 18, 22, 17, 19, 16, 21
Create a variable called sample_size and set it to 4
Use a for loop to take 5 random samples of size sample_size from plant_heights using numpy.random.choice
Calculate the average height of each sample and store these averages in a list called sample_averages
Print the list sample_averages to see the results
💡 Why This Matters
🌍 Real World
Scientists and researchers often take random samples from a population to estimate average values without measuring everyone.
💼 Career
Understanding sampling distributions is important for data analysts and scientists to make predictions and decisions based on sample data.
Progress0 / 4 steps
1
Create the plant heights list
Create a list called plant_heights with these exact values: 10, 15, 14, 20, 18, 22, 17, 19, 16, 21
NumPy
Hint
Use square brackets [] to create the list and separate numbers with commas.
2
Set the sample size
Create a variable called sample_size and set it to 4
NumPy
Hint
Just assign the number 4 to the variable sample_size.
3
Take random samples and calculate averages
Import numpy as np. Create an empty list called sample_averages. Use a for loop with variable i running 5 times. Inside the loop, take a random sample of size sample_size from plant_heights using np.random.choice with replace=True. Calculate the average of this sample using np.mean and append it to sample_averages.
NumPy
Hint
Remember to import numpy first. Use np.random.choice to pick random samples with replacement. Use np.mean to find the average.
4
Print the sample averages
Print the list sample_averages to see the average heights of the 5 random samples.
NumPy
Hint
Use print(sample_averages) to show the list of averages.
Practice
(1/5)
1. What does the numpy.random.choice function do in random sampling?
easy
A. It selects random elements from a given array or list.
B. It generates random numbers from a normal distribution.
C. It creates a sequence of numbers with equal spacing.
D. It calculates the mean of a dataset.
Solution
Step 1: Understand the purpose of numpy.random.choice
This function is used to randomly pick elements from an input array or list, optionally with replacement.
Step 2: Compare with other options
Options A, B, and C describe different numpy functions or operations unrelated to random selection from an array.
Final Answer:
It selects random elements from a given array or list. -> Option A
Quick Check:
numpy.random.choice = random selection [OK]
Hint: Remember: choice picks from arrays, normal generates bell curve numbers [OK]
Common Mistakes:
Confusing choice with normal distribution generator
Thinking choice creates sequences
Assuming choice calculates statistics
2. Which of the following is the correct syntax to generate 5 samples from a binomial distribution with 10 trials and success probability 0.3 using numpy?
easy
A. numpy.binomial(10, 0.3, 5)
B. numpy.random.binomial(10, 0.3, size=5)
C. numpy.random.binomial(size=5, 10, 0.3)
D. numpy.random.binomial(5, 10, 0.3)
Solution
Step 1: Recall the numpy binomial function signature
The correct syntax is numpy.random.binomial(n, p, size) where n is number of trials, p is success probability, and size is number of samples.
Step 2: Check each option
numpy.random.binomial(10, 0.3, size=5) matches the correct order and uses the keyword size. numpy.binomial(10, 0.3, 5) misses .random. numpy.random.binomial(size=5, 10, 0.3) mixes keyword size=5 followed by positionals, causing SyntaxError. numpy.random.binomial(5, 10, 0.3) swaps parameters incorrectly.
Final Answer:
numpy.random.binomial(10, 0.3, size=5) -> Option B
The code sets a random seed for reproducibility, then generates 3 samples from a normal distribution with mean 5 and standard deviation 2.
Step 2: Run or recall the output
Using seed 0, the samples generated are [8.53, 5.8, 6.96] after rounding to 2 decimals.
Final Answer:
[8.53 5.8 6.96] -> Option D
Quick Check:
Seed 0 normal samples = [8.53 5.8 6.96] [OK]
Hint: Use seed for fixed output, then round to compare [OK]
Common Mistakes:
Ignoring seed causes different outputs
Rounding incorrectly
Mixing mean and scale parameters
4. Identify the error in this code snippet that tries to sample 4 values from a uniform distribution between 0 and 1:
import numpy as np
samples = np.random.uniform(low=0, high=1, size=4)
print(samples)
medium
A. There is no error; the code runs correctly.
B. The parameters low and high are reversed.
C. The function name should be random.uniform without numpy prefix.
D. The size parameter must be a tuple, not an integer.
Solution
Step 1: Review the numpy uniform function syntax
np.random.uniform(low, high, size) is the correct way to generate samples from a uniform distribution.
Step 2: Check the code correctness
The code uses correct function name, parameter order, and size as integer for 1D array. It will run without error and print 4 random values between 0 and 1.
Final Answer:
There is no error; the code runs correctly. -> Option A
Quick Check:
Uniform sampling syntax correct = There is no error; the code runs correctly. [OK]
Hint: Check function name and parameter order carefully [OK]
Common Mistakes:
Confusing numpy.random.uniform with Python's random.uniform
Swapping low and high values
Using tuple for size unnecessarily
5. You want to simulate rolling a fair six-sided die 1000 times and count how many times the number 4 appears. Which numpy code correctly performs this simulation?
hard
A. rolls = np.random.choice([1,2,3,4,5,6], size=1000)
count_4 = np.sum(rolls == 4)