Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Chapter 3: Counting Techniques: Permutations and Combinations

Welcome to Chapter 3! In the previous chapter, we established the fundamental language of probability using sets and explored the basic axioms and rules. Now, we dive into a crucial skill for calculating probabilities, especially when dealing with equally likely outcomes: counting.

Often, calculating a probability boils down to answering two questions:

  1. How many total possible outcomes are there in our sample space?

  2. How many of those outcomes correspond to the event we’re interested in?

If all outcomes are equally likely, the probability is simply the ratio of these two counts. While this sounds simple, counting the number of possibilities can become complex very quickly. Imagine trying to list every possible 5-card poker hand!

This chapter introduces systematic methods for counting outcomes: the Multiplication Principle, Permutations, and Combinations. We’ll see how these techniques allow us to tackle problems that would be tedious or impossible to solve by simple enumeration. We’ll also use Python’s math and scipy.special libraries to perform these calculations efficiently.

Let’s start counting!

The Multiplication Principle

The most fundamental counting technique is the Multiplication Principle (also known as the rule of product).

Principle: If a procedure can be broken down into a sequence of kk steps, and

then the total number of ways to perform the entire procedure is the product n1×n2××nkn_1 \times n_2 \times \dots \times n_k.

Example: A restaurant offers a fixed-price dinner menu with 3 choices for starters, 4 choices for the main course, and 2 choices for dessert. How many different meal combinations are possible?

According to the Multiplication Principle, the total number of different meal combinations is 3×4×23 \times 4 \times 2.

Python Implementation
# Using Python for the meal combination example
num_starters = 3
num_mains = 4
num_desserts = 2

total_combinations = num_starters * num_mains * num_desserts
print(f"Total number of meal combinations: {total_combinations}")
Total number of meal combinations: 24

This principle is the foundation upon which permutations and combinations are built.

Permutations: When Order Matters

A permutation is an arrangement of objects in a specific order. Consider arranging books on a shelf – swapping two books creates a different arrangement.

Permutations without Repetition

This is the most common type of permutation. It involves arranging kk distinct objects chosen from a set of nn distinct objects, where order matters and objects cannot be reused.

Building Intuition: The Multiplication Principle Approach

Before we introduce the general formula, let’s understand permutations through the Multiplication Principle we learned earlier.

Example: In a race with 8 runners, how many different ways can the 1st, 2nd, and 3rd place medals be awarded?

Let’s think through this step-by-step:

By the Multiplication Principle:

Total ways=8×7×6=336\text{Total ways} = 8 \times 7 \times 6 = 336

This is a permutation problem because:

  1. Order matters (Gold ≠ Silver ≠ Bronze)

  2. We can’t reuse runners (each runner gets at most one medal)

Key insight: Notice the pattern:

The General Formula

This multiplication pattern holds for all permutation problems. The number of permutations of nn distinct objects taken kk at a time is denoted by P(n,k)P(n, k), nPk_nP_k, or PknP^n_k and is calculated as:

P(n,k)=n×(n1)×(n2)××(nk+1) P(n, k) = n \times (n-1) \times (n-2) \times \dots \times (n-k+1)

This can be written more compactly using factorials:

P(n,k)=n!(nk)! P(n, k) = \frac{n!}{(n-k)!}

where n!n! (read “n factorial”) is the product of all positive integers up to nn (i.e., n!=n×(n1)××2×1n! = n \times (n-1) \times \dots \times 2 \times 1), and 0!=10! = 1 by definition.

Why does this work? The factorial formula gives us:

P(8,3)=8!(83)!=8!5!=8×7×6×5×4×3×2×15×4×3×2×1=8×7×6P(8, 3) = \frac{8!}{(8-3)!} = \frac{8!}{5!} = \frac{8 \times 7 \times 6 \times \cancel{5 \times 4 \times 3 \times 2 \times 1}}{\cancel{5 \times 4 \times 3 \times 2 \times 1}} = 8 \times 7 \times 6

The (nk)!(n-k)! in the denominator cancels out the unwanted terms, leaving us with exactly kk consecutive descending integers starting from nn.

Let’s calculate this using Python.

Python Implementation
import math
from scipy.special import perm

# Calculate P(8, 3) - race permutations
n_runners = 8
k_places = 3

# Using math.factorial
p_8_3_math = math.factorial(n_runners) // math.factorial(n_runners - k_places)
print(f"Using math.factorial: P({n_runners}, {k_places}) = {p_8_3_math}")

# Using scipy.special.perm
p_8_3_scipy = perm(n_runners, k_places, exact=True)
print(f"Using scipy.special.perm: P({n_runners}, {k_places}) = {p_8_3_scipy}")

# Direct calculation based on the multiplication principle
p_8_3_direct = 8 * 7 * 6
print(f"Direct calculation: {p_8_3_direct}")
Using math.factorial: P(8, 3) = 336
Using scipy.special.perm: P(8, 3) = 336
Direct calculation: 336

Special Case: The number of ways to arrange all nn distinct objects is P(n,n)=n!(nn)!=n!0!=n!P(n, n) = \frac{n!}{(n-n)!} = \frac{n!}{0!} = n!. For example, there are 3!=3×2×1=63! = 3 \times 2 \times 1 = 6 ways to arrange the letters A, B, C: (ABC, ACB, BAC, BCA, CAB, CBA).

Permutations with Repetition (Multinomial Coefficients)

Sometimes we need to arrange objects where some are identical.

Building Intuition: Starting Simple

Simple Example: How many distinct ways can you arrange the letters in “AAB”?

Let’s list all possible arrangements:

  1. AAB

  2. ABA

  3. BAA

Only 3 distinct arrangements!

But wait – if all letters were distinguishable (say, A₁A₂B), how many arrangements would there be?

We’d have 3!=63! = 6 arrangements:

  1. A₁A₂B

  2. A₁BA₂

  3. A₂A₁B ← looks the same as arrangement 1 when A’s are identical

  4. A₂BA₁ ← looks the same as arrangement 2 when A’s are identical

  5. BA₁A₂

  6. BA₂A₁ ← looks the same as arrangement 5 when A’s are identical

Key insight:

The pattern:

Distinct arrangements=Total if all were distinguishableWays to rearrange identical objects\text{Distinct arrangements} = \frac{\text{Total if all were distinguishable}}{\text{Ways to rearrange identical objects}}

Scaling Up: MISSISSIPPI

Now let’s apply this reasoning to a more complex problem: How many distinct ways can the letters in “MISSISSIPPI” be arranged?

Step 1: Count the letters

Check: 1+4+4+2=111 + 4 + 4 + 2 = 11

Step 2: Apply the pattern

If all 11 letters were distinguishable, we’d have 11!11! arrangements.

But we’re overcounting because:

Each distinct word is being counted 1!×4!×4!×2!1! \times 4! \times 4! \times 2! times.

Step 3: Calculate

Distinct arrangements=11!1!×4!×4!×2!\text{Distinct arrangements} = \frac{11!}{1! \times 4! \times 4! \times 2!}

The General Formula

This pattern holds for all permutation-with-repetition problems. The number of distinct permutations of nn objects where there are n1n_1 identical objects of type 1, n2n_2 identical objects of type 2, ..., and nkn_k identical objects of type k (where n1+n2++nk=nn_1 + n_2 + \dots + n_k = n) is:

n!n1!×n2!××nk!\frac{n!}{n_1! \times n_2! \times \dots \times n_k!}

This is also called the multinomial coefficient.

Python Implementation
# Calculate distinct arrangements of MISSISSIPPI
n = 11
n_M = 1
n_I = 4
n_S = 4
n_P = 2

numerator = math.factorial(n)
denominator = math.factorial(n_M) * math.factorial(n_I) * math.factorial(n_S) * math.factorial(n_P)
distinct_arrangements = numerator // denominator

print(f"Number of distinct arrangements of 'MISSISSIPPI': {distinct_arrangements}")
Number of distinct arrangements of 'MISSISSIPPI': 34650

Combinations: When Order Doesn’t Matter

A combination is a selection of objects where the order of selection does not matter. Consider choosing members for a committee – selecting Alice then Bob is the same as selecting Bob then Alice.

Combinations without Repetition

This involves selecting kk distinct objects from a set of nn distinct objects, where order does not matter and objects cannot be reused.

Building Intuition: From Permutations to Combinations

Before we introduce the general formula, let’s understand combinations by building on what we learned about permutations.

Example: How many ways can a committee of 3 people be chosen from a group of 10 people?

Let’s think through this step-by-step:

Step 1: What if order mattered?

Imagine we were choosing a President, Vice President, and Secretary (3 different roles):

Step 2: But order doesn’t matter for a committee

For a committee, these are all the same selection:

All 6 of these represent the committee {Alice, Bob, Carol}.

Step 3: How many ways can we arrange the same 3 people?

Any group of 3 people can be ordered in 3!=3×2×1=63! = 3 \times 2 \times 1 = 6 different ways.

Step 4: Remove the overcounting

Since each committee is being counted 6 times in our permutation count, we divide:

Total committees=P(10,3)3!=7206=120\text{Total committees} = \frac{P(10, 3)}{3!} = \frac{720}{6} = 120

Key insight: To convert from permutations (where order matters) to combinations (where order doesn’t matter), we divide by k!k! to eliminate all the different orderings of the same selection.

The General Formula

This pattern holds for all combination problems. The number of combinations of nn distinct objects taken kk at a time is denoted by C(n,k)C(n, k), nCk_nC_k, CknC^n_k, or (nk)\binom{n}{k} (read “n choose k”) and is calculated as:

C(n,k)=(nk)=P(n,k)k!=n!k!(nk)! C(n, k) = \binom{n}{k} = \frac{P(n, k)}{k!} = \frac{n!}{k!(n-k)!}

Why does this work? Starting from the relationship to permutations:

C(10,3)=P(10,3)3!=10×9×83×2×1=7206=120C(10, 3) = \frac{P(10, 3)}{3!} = \frac{10 \times 9 \times 8}{3 \times 2 \times 1} = \frac{720}{6} = 120

Or using the factorial formula:

C(10,3)=10!3!(103)!=10!3!×7!=10×9×8×7!3×2×1×7!=7206=120C(10, 3) = \frac{10!}{3!(10-3)!} = \frac{10!}{3! \times 7!} = \frac{10 \times 9 \times 8 \times \cancel{7!}}{3 \times 2 \times 1 \times \cancel{7!}} = \frac{720}{6} = 120

Let’s calculate this using Python.

Python Implementation
import math
from scipy.special import comb

# Calculate C(10, 3) - committee combinations
n_people = 10
k_committee = 3

# Using math.factorial
c_10_3_math = math.factorial(n_people) // (math.factorial(k_committee) * math.factorial(n_people - k_committee))
print(f"Using math.factorial: C({n_people}, {k_committee}) = {c_10_3_math}")

# Using scipy.special.comb
c_10_3_scipy = comb(n_people, k_committee, exact=True)
print(f"Using scipy.special.comb: C({n_people}, {k_committee}) = {c_10_3_scipy}")

# Direct calculation
c_10_3_direct = (10 * 9 * 8) // (3 * 2 * 1)
print(f"Direct calculation: {c_10_3_direct}")
Using math.factorial: C(10, 3) = 120
Using scipy.special.comb: C(10, 3) = 120
Direct calculation: 120

Combinations with Repetition

This involves selecting kk objects from nn types of objects, where order doesn’t matter and we can choose multiple objects of the same type (repetition is allowed). This is sometimes called “multiset coefficient” or “stars and bars” problem.

Building Intuition: The “Stars and Bars” Visual Method

This is one of the most surprising formulas in counting, but there’s a beautiful visual way to understand it! Let’s start with a concrete example.

Example: A bakery offers 4 types of donuts (plain, chocolate, glazed, jelly). How many different ways can you select a dozen (12) donuts?

Here, n=4n=4 (types of donuts) and we’re choosing k=12k=12 donuts. Order doesn’t matter (choosing chocolate then plain is the same as plain then chocolate), and we can choose multiple donuts of the same type.

Visual representation: We can represent any selection using stars (★) for donuts and bars (|) as dividers between types.

For example, this arrangement:

★★|★★★★|★★★★★|★

Represents this selection:

The counting problem becomes: How many ways can we arrange 12 stars and 3 bars?

Let’s analyze this:

Key insight: Any arrangement of these 15 objects represents a valid donut selection! We just need to choose which 12 positions (out of 15 total) will have stars (the remaining 3 positions automatically get bars).

This is a combination without repetition problem we already know how to solve:

Number of ways=(1512)=(153)\text{Number of ways} = \binom{15}{12} = \binom{15}{3}

We can choose either the 12 star positions or the 3 bar positions — the result is the same!

Generalizing the pattern:

The General Formula

This pattern holds for all combinations-with-repetition problems. The number of combinations with repetition of nn types of objects taken kk at a time is:

(n+k1k)=(n+k1)!k!(n1)!\binom{n+k-1}{k} = \frac{(n+k-1)!}{k!(n-1)!}

Why this formula? We’re arranging kk stars and (n1)(n-1) bars, for a total of (n+k1)(n+k-1) objects. We choose which kk positions get stars (or equivalently, which (n1)(n-1) positions get bars).

Calculating our donut example:

(4+12112)=(1512)=15!12!×3!=15×14×133×2×1=27306=455\binom{4+12-1}{12} = \binom{15}{12} = \frac{15!}{12! \times 3!} = \frac{15 \times 14 \times 13}{3 \times 2 \times 1} = \frac{2730}{6} = 455
Python Implementation
# Calculate combinations with repetition - donut selection
n_types = 4
k_donuts = 12

# Using the formula C(n+k-1, k)
combinations_with_repetition = comb(n_types + k_donuts - 1, k_donuts, exact=True)
print(f"Number of ways to choose {k_donuts} donuts from {n_types} types: {combinations_with_repetition}")

# Direct calculation
c_15_12_direct = (15 * 14 * 13) // (3 * 2 * 1)
print(f"Direct calculation: {c_15_12_direct}")
Number of ways to choose 12 donuts from 4 types: 455
Direct calculation: 455

Note:

# combinations_with_repetition_scipy = comb(n_types, k_donuts, exact=True, repetition=True)
# print(f"Using scipy.special.comb with repetition=True: {combinations_with_repetition_scipy}")

^^ Uncomment the above lines if your SciPy version supports repetition=True (relatively recent addition)

Applications to Probability Problems

Counting techniques are essential for calculating probabilities in scenarios with equally likely outcomes, often found in games of chance, sampling, and more.

The basic formula is:

P(Event)=Number of outcomes favorable to the eventTotal number of possible outcomes P(\text{Event}) = \frac{\text{Number of outcomes favorable to the event}}{\text{Total number of possible outcomes}}

Both the numerator and the denominator often require permutations or combinations to calculate.

Example: UK National Lottery

In the UK National Lottery’s main “Lotto” game (as of early 2020s), a player chooses 6 distinct numbers from 1 to 59. The lottery machine then randomly selects 6 distinct numbers. What is the probability of winning the jackpot (matching all 6 numbers)?

  1. Total number of possible outcomes: This is the number of ways to choose 6 distinct numbers from 59, where order doesn’t matter. This is a combination problem: C(59,6)C(59, 6).

  2. Number of favorable outcomes: There is only 1 way to match the specific 6 numbers drawn by the machine.

The probability is P(Jackpot)=1C(59,6)P(\text{Jackpot}) = \frac{1}{C(59, 6)}.

Python Implementation
# UK National Lottery - jackpot probability
n_lotto = 59  # Total numbers to choose from
k_lotto = 6   # Numbers to choose

# Calculate the total number of possible combinations
total_lotto_combinations = comb(n_lotto, k_lotto, exact=True)
print(f"Total possible UK Lotto combinations: {total_lotto_combinations:,}")

# Calculate the probability of winning the jackpot
prob_jackpot = 1 / total_lotto_combinations
print(f"Probability of winning the jackpot: 1 / {total_lotto_combinations:,}")
print(f"Probability (decimal): {prob_jackpot:.10f}")
print(f"Probability (scientific notation): {prob_jackpot:e}")
Total possible UK Lotto combinations: 45,057,474
Probability of winning the jackpot: 1 / 45,057,474
Probability (decimal): 0.0000000222
Probability (scientific notation): 2.219388e-08

Example: Poker Hand Probability (Four of a Kind)

What is the probability of being dealt “Four of a Kind” in a standard 5-card poker hand from a 52-card deck? (Four cards of one rank, plus one other card of a different rank).

  1. Total number of possible outcomes: The total number of ways to choose 5 cards from 52, where order doesn’t matter. This is C(52,5)C(52, 5).

  2. Number of favorable outcomes (Four of a Kind): We can use the Multiplication Principle to count this:

    • Step 1: Choose the rank for the four cards (e.g., four Aces, four Kings). There are C(13,1)=13C(13, 1) = 13 ways.

    • Step 2: Choose the four cards of that rank. There is only C(4,4)=1C(4, 4) = 1 way (you must take all four suits).

    • Step 3: Choose the rank for the fifth card (it must be different from the rank in Step 1). There are C(12,1)=12C(12, 1) = 12 remaining ranks.

    • Step 4: Choose the suit for the fifth card. There are C(4,1)=4C(4, 1) = 4 ways. Total favorable outcomes = 13×1×12×413 \times 1 \times 12 \times 4.

The probability is P(Four of a Kind)=13×1×12×4C(52,5)P(\text{Four of a Kind}) = \frac{13 \times 1 \times 12 \times 4}{C(52, 5)}.

Python Implementation
# Poker: Four of a Kind probability
n_deck = 52
k_hand = 5

# 1. Calculate the total number of possible 5-card hands
total_hands = comb(n_deck, k_hand, exact=True)
print(f"Total possible 5-card poker hands: {total_hands:,}")

# 2. Calculate the number of ways to get Four of a Kind
ways_choose_rank4 = comb(13, 1, exact=True)  # Choose rank for the four cards
ways_choose_suits4 = comb(4, 4, exact=True)  # Choose the 4 suits (only 1 way)
ways_choose_rank1 = comb(12, 1, exact=True)  # Choose rank for fifth card
ways_choose_suit1 = comb(4, 1, exact=True)   # Choose suit for fifth card

favorable_outcomes_4kind = ways_choose_rank4 * ways_choose_suits4 * ways_choose_rank1 * ways_choose_suit1
print(f"Number of ways to get Four of a Kind: {favorable_outcomes_4kind}")

# 3. Calculate the probability
prob_4kind = favorable_outcomes_4kind / total_hands
print(f"Probability of being dealt Four of a Kind: {prob_4kind:.8f}")
print(f"Approximately 1 in {1/prob_4kind:,.0f}")
Total possible 5-card poker hands: 2,598,960
Number of ways to get Four of a Kind: 624
Probability of being dealt Four of a Kind: 0.00024010
Approximately 1 in 4,165

Hands-on: Using Python for Counting

We’ve already seen how math.factorial, scipy.special.perm, and scipy.special.comb can be used. Let’s solidify this.

Key Functions:

Remember to import them:

import math
from scipy.special import perm, comb

Exercise Idea: Calculate the probability of getting a “Full House” (three cards of one rank, two cards of another rank) in a 5-card poker hand.

Hint:

  1. Total hands: C(52,5)C(52, 5) (calculated above).

  2. Favorable outcomes:

    • Choose the rank for the three cards: C(13,1)C(13, 1) ways.

    • Choose 3 suits for that rank: C(4,3)C(4, 3) ways.

    • Choose the rank for the two cards: C(12,1)C(12, 1) ways (must be different from the first rank).

    • Choose 2 suits for that second rank: C(4,2)C(4, 2) ways.

    • Use the Multiplication Principle.*

Python Implementation
# Poker: Full House probability
# Total hands (already calculated)
total_hands = comb(52, 5, exact=True)

# Step 1: Choose rank for the three cards
ways_choose_rank3 = comb(13, 1, exact=True)
# Step 2: Choose 3 suits for that rank
ways_choose_suits3 = comb(4, 3, exact=True)
# Step 3: Choose rank for the pair (from remaining 12 ranks)
ways_choose_rank2 = comb(12, 1, exact=True)
# Step 4: Choose 2 suits for that rank
ways_choose_suits2 = comb(4, 2, exact=True)

favorable_outcomes_fullhouse = ways_choose_rank3 * ways_choose_suits3 * ways_choose_rank2 * ways_choose_suits2
print(f"Number of ways to get a Full House: {favorable_outcomes_fullhouse}")

# Calculate the probability
prob_fullhouse = favorable_outcomes_fullhouse / total_hands
print(f"Probability of being dealt a Full House: {prob_fullhouse:.8f}")
print(f"Approximately 1 in {1/prob_fullhouse:,.0f}")
Number of ways to get a Full House: 3744
Probability of being dealt a Full House: 0.00144058
Approximately 1 in 694

Quick Reference: Which Counting Technique Should I Use?

One of the most common challenges is deciding which formula to apply. Use this decision guide:

Decision Questions

START HERE: I need to count arrangements or selections

  1. Does ORDER matter?

    • YES → Use PERMUTATIONS

      • Can items repeat? (e.g., same person in multiple positions?)

        • NO → Permutation without repetition: P(n,k)=n!(nk)!P(n,k) = \frac{n!}{(n-k)!}

        • YES → Permutation with repetition: nkn^k or multinomial coefficient

    • NO → Use COMBINATIONS

      • Can items repeat? (e.g., multiple items of same type?)

        • NO → Combination without repetition: C(n,k)=(nk)=n!k!(nk)!C(n,k) = \binom{n}{k} = \frac{n!}{k!(n-k)!}

        • YES → Combination with repetition: (n+k1k)\binom{n+k-1}{k}

Quick Reference Table

ScenarioOrder?Repeat?TechniqueFormula
Race podium (1st, 2nd, 3rd from 8 runners)YESNOPermutationP(8,3)=8!5!P(8,3) = \frac{8!}{5!}
Committee of 3 from 10 peopleNONOCombination(103)\binom{10}{3}
Arranging MISSISSIPPIYESYESPerm. with rep.11!1!4!4!2!\frac{11!}{1!4!4!2!}
Choosing 12 donuts from 4 typesNOYESComb. with rep.(1512)\binom{15}{12}
5-card poker hand from 52 cardsNONOCombination(525)\binom{52}{5}
License plate: 3 letters, 4 digitsYESYESMultiplication263×10426^3 \times 10^4

Common Examples by Type

Permutations (order matters):

Combinations (order doesn’t matter):

With repetition:

Without repetition:

Chapter Summary

Key Takeaways

The core insight: Systematic counting techniques transform complex probability problems into manageable calculations. When outcomes are equally likely, P(E)=ESP(E) = \frac{|E|}{|S|} — but determining E|E| and S|S| requires methodical counting.

The fundamental techniques:

  1. Multiplication Principle: Sequential choices multiply

    • If task has kk steps with n1,n2,,nkn_1, n_2, \ldots, n_k options each, total ways = n1×n2××nkn_1 \times n_2 \times \cdots \times n_k

    • Foundation for all other counting methods

  2. Permutations (P(n,k)=n!(nk)!P(n,k) = \frac{n!}{(n-k)!}): Order matters, no repetition

    • Race podiums, passwords with distinct characters, arranging books

    • Special case: P(n,n)=n!P(n,n) = n! for arranging all nn objects

  3. Combinations ((nk)=n!k!(nk)!\binom{n}{k} = \frac{n!}{k!(n-k)!}): Order doesn’t matter, no repetition

    • Committees, lottery numbers, poker hands

    • Related to permutations: C(n,k)=P(n,k)k!C(n,k) = \frac{P(n,k)}{k!} (divide out ordering)

  4. With Repetition:

    • Permutations with repetition: Multinomial coefficients for identical objects (MISSISSIPPI)

    • Combinations with repetition: Stars and bars method for choosing with replacement

Why This Matters

Counting techniques are essential for:

Common Pitfalls to Avoid

  1. Confusing permutations and combinations: Always ask “does order matter?”

  2. Misunderstanding “without repetition”: It means distinct positions/slots, not sampling without replacement

  3. Forgetting to divide by k!: When converting permutations to combinations

  4. Overlooking repeated elements: MISSISSIPPI needs multinomial, not simple n!n!

Python Tools

import math
from scipy.special import perm, comb

math.factorial(n)                  # n!
perm(n, k, exact=True)            # P(n,k)
comb(n, k, exact=True)            # C(n,k)
comb(n+k-1, k, exact=True)        # Combinations with repetition

Mastering these counting techniques provides a powerful toolkit for tackling a wide range of probability problems. In the next chapter, we will move on to exploring probabilities when events are not independent, introducing the concept of Conditional Probability.

Exercises

  1. Multiplication Principle: A password must contain:

    • 3 letters (26 choices each, case-insensitive)

    • 2 digits (0-9)

    • 1 special character (! @, #, $, %)

    How many different passwords are possible if: a) Characters can repeat b) All characters must be distinct

  2. Permutations: A class has 12 students. In how many ways can: a) A president, vice president, and secretary be chosen (different roles)? b) An unordered committee of 3 students be formed? c) Verify that your answer to (a) equals your answer to (b) multiplied by 3!

  3. Permutations with Repetition: How many distinct arrangements can be made from the letters in: a) STATISTICS b) PROBABILITY

  4. Combinations: A standard deck has 52 cards. How many different 5-card poker hands: a) Are possible in total? b) Contain all hearts? c) Contain exactly 2 aces?

  5. Combinations with Repetition: An ice cream shop offers 8 flavors. How many ways can you order: a) 3 scoops if each must be a different flavor? b) 3 scoops if flavors can repeat (stars and bars)? c) If you order 3 chocolate scoops, which formula applies?

  6. Mixed Application: You roll a fair die 4 times. What is the probability of getting exactly 2 sixes?

    Hint: First count favorable outcomes using combinations to choose which 2 rolls are sixes, then calculate probability.