**Python Puzzles**

Simulate a multiple-choice exam where you divide the questions into three probabilities of attaining a correct answer.

- Questions that have a 100% confidence of being correct
- Questions that have a 1/3 confidence of being correct
- Questions that have a 1/4 confidence of being correct

After running 10,000 simulations of the exam, determine the following:

- Average number of correct answers
- Minimum and maximum number of correct answers
- Percentage of the exams where the number of correct answers is over some desired value
- Standard Deviation

Here is the code I developed in Python. In my simulation I choose a 50 question exam where my desired score of 35 was attained 74% of the time.

import numpy as np import matplotlib.pyplot as plt import pandas as pd desired_score = 35 known_guess = 1 educated_guess = 1/3 random_guess = 1/4 simulations = 1_000_000 np_result = np.random.binomial(30,known_guess,simulations) np_result = np.add(np_result,np.random.binomial(10,educated_guess,simulations)) np_result = np.add(np_result,np.random.binomial(10,random_guess,simulations)) filter_arr = np_result >= 35 newarr = np_result[filter_arr] probability_desired_score = len(newarr)/len(np_result) print('Probability of obtaining a score of ' + str(desired_score) + ' or greater is ' + '{0:.2%}'.format(probability_desired_score)) print('The average score is' + '{0:.2%}'.format(np.average(np_result))) print('The minimum score is' + '{0:.2%}'.format(np.min(np_result))) print('The maximum score is' + '{0:.2%}'.format(np.max(np_result))) print('The standard deviation is' + '{0:.2%}'.format(np.std(np_result))) df = pd.Series(np_result) df = df.value_counts() print(df.sort_index()) plt.bar(df.index, df.values) plt.title('Distribution of Correct Answers') plt.xlabel('Correct Answers') plt.ylabel('Frequency') plt.xticks(np.arange(min(df.index), 51, 2)) plt.show()

**Here are the results of the print statements.**

Probability of obtaining a score of 35 or greater is 74%

The average score is 36

The minimum score is 30

The maximum score is 46

The standard deviation is 2

**This Pandas Series shows the number of questions correct on the left and the occurrences on the right. **

1,917 exam simulations had 36 correct answers.

Reviewing the bar chart, we can see the data fits a normal distribution.