Bird
Raised Fist0
NumPydata~10 mins

Random sampling distributions in NumPy - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to generate 1000 random samples from a normal distribution with mean 0 and standard deviation 1.

NumPy
samples = np.random.normal(loc=0, scale=[1], size=1000)
Drag options to blanks, or click blank then click option'
A-1
B0
C10
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using 0 as standard deviation causes no variation in samples.
Using negative values for standard deviation is invalid.
2fill in blank
medium

Complete the code to generate 500 random samples from a uniform distribution between 10 and 20.

NumPy
samples = np.random.uniform(low=[1], high=20, size=500)
Drag options to blanks, or click blank then click option'
A10
B0
C20
D15
Attempts:
3 left
💡 Hint
Common Mistakes
Setting low greater than high causes errors.
Using 0 instead of 10 changes the range.
3fill in blank
hard

Fix the error in the code to generate 100 samples from a binomial distribution with 10 trials and success probability 0.5.

NumPy
samples = np.random.binomial(n=10, p=[1], size=100)
Drag options to blanks, or click blank then click option'
A1.5
B0.5
C-0.5
D10
Attempts:
3 left
💡 Hint
Common Mistakes
Using values greater than 1 or negative for p causes errors.
Confusing number of trials n with probability p.
4fill in blank
hard

Fill both blanks to create a dictionary of sample means from 1000 samples each, for sample sizes 10 and 50, using a normal distribution with mean 0 and std 1.

NumPy
means = {size: np.mean(np.random.normal(loc=0, scale=1, size=[1])) for size in [[2], 50]}
Drag options to blanks, or click blank then click option'
A10
B20
C30
D40
Attempts:
3 left
💡 Hint
Common Mistakes
Using a fixed size instead of the variable size.
Mismatching sample sizes between the dictionary keys and sample generation.
5fill in blank
hard

Fill all three blanks to create a dictionary of sample variances from 500 samples each, for sample sizes 20 and 100, using a uniform distribution between 0 and 1.

NumPy
variances = {size: np.var(np.random.uniform(low=0, high=[1], size=[2]), ddof=[3]) for size in [20, 100]}
Drag options to blanks, or click blank then click option'
A1
B500
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using ddof=0 gives population variance, not sample variance.
Using wrong sample size causes incorrect variance calculation.

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

  1. 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.
  2. Step 2: Compare with other options

    Options A, B, and C describe different numpy functions or operations unrelated to random selection from an array.
  3. Final Answer:

    It selects random elements from a given array or list. -> Option A
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    numpy.random.binomial(10, 0.3, size=5) -> Option B
  4. Quick Check:

    binomial(n, p, size) = numpy.random.binomial(10, 0.3, size=5) [OK]
Hint: Remember order: trials, probability, then size keyword [OK]
Common Mistakes:
  • Mixing argument order
  • Omitting size keyword
  • Using wrong function name
3. What is the output of the following code?
import numpy as np
np.random.seed(0)
samples = np.random.normal(loc=5, scale=2, size=3)
print(np.round(samples, 2))
medium
A. [7.65 5.12 6.34]
B. [8.53 4.32 6.58]
C. [8.82 4.0 6.89]
D. [8.53 5.8 6.96]

Solution

  1. Step 1: Understand the code

    The code sets a random seed for reproducibility, then generates 3 samples from a normal distribution with mean 5 and standard deviation 2.
  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.
  3. Final Answer:

    [8.53 5.8 6.96] -> Option D
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    There is no error; the code runs correctly. -> Option A
  4. 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)
B. rolls = np.random.binomial(6, 1/6, size=1000) count_4 = np.count_nonzero(rolls == 4)
C. rolls = np.random.randint(1, 7, size=1000) count_4 = np.sum(rolls == 4)
D. rolls = np.random.normal(4, 1, size=1000) count_4 = np.sum(rolls == 4)

Solution

  1. Step 1: Understand the problem

    We want to simulate rolling a die 1000 times, each roll equally likely from 1 to 6, then count how many times 4 appears.
  2. Step 2: Evaluate each option

    rolls = np.random.randint(1, 7, size=1000) count_4 = np.sum(rolls == 4): rolls = np.random.randint(1, 7, size=1000) count_4 = np.sum(rolls == 4) uses randint from 1 to 6 (exclusive upper bound 7), perfect for die rolls. rolls = np.random.binomial(6, 1/6, size=1000) count_4 = np.count_nonzero(rolls == 4): rolls = np.random.binomial(6, 1/6, size=1000) count_4 = np.count_nonzero(rolls == 4) uses binomial which models number of successes in trials, not die rolls. rolls = np.random.choice([1,2,3,4,5,6], size=1000) count_4 = np.sum(rolls == 4): rolls = np.random.choice([1,2,3,4,5,6], size=1000) count_4 = np.sum(rolls == 4) omits replace=True (defaults to False), raising ValueError since size=1000 > 6. rolls = np.random.normal(4, 1, size=1000) count_4 = np.sum(rolls == 4): rolls = np.random.normal(4, 1, size=1000) count_4 = np.sum(rolls == 4) uses normal distribution, inappropriate for discrete die rolls.
  3. Step 3: Choose the best correct code

    rolls = np.random.randint(1, 7, size=1000) count_4 = np.sum(rolls == 4) is the correct way to simulate die rolls and count 4s.
  4. Final Answer:

    rolls = np.random.randint(1, 7, size=1000) count_4 = np.sum(rolls == 4) -> Option C
  5. Quick Check:

    Use randint for discrete uniform die rolls = rolls = np.random.randint(1, 7, size=1000) count_4 = np.sum(rolls == 4) [OK]
Hint: Use randint(1,7) for dice rolls, then count matches [OK]
Common Mistakes:
  • Using binomial instead of uniform discrete
  • Using normal distribution for discrete outcomes
  • Forgetting replace=True in choice
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard