28 lines
788 B
Python
28 lines
788 B
Python
|
import numpy as np
|
||
|
|
||
|
pi_digits = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6, 4, 3])
|
||
|
|
||
|
# a
|
||
|
|
||
|
unique_digits, counts = np.unique(pi_digits, return_counts=True)
|
||
|
digit_probs = counts / len(pi_digits)
|
||
|
print("digit probabilities:", [(unique_digits[i], digit_probs[i]) for i in range(len(unique_digits))])
|
||
|
|
||
|
# b
|
||
|
|
||
|
most_probable_digit = np.argmax(digit_probs)
|
||
|
print("most probable digit:", most_probable_digit)
|
||
|
|
||
|
median_digit = np.sort(pi_digits)[len(pi_digits) // 2]
|
||
|
print("median digit:", median_digit)
|
||
|
|
||
|
digit_average = np.sum(pi_digits) / len(pi_digits)
|
||
|
print("digit average:", digit_average)
|
||
|
|
||
|
# c
|
||
|
|
||
|
expect_j_sqrd = np.sum(pi_digits ** 2) / len(pi_digits)
|
||
|
expect_j = np.sum(pi_digits) / len(pi_digits)
|
||
|
std = np.sqrt(expect_j_sqrd - expect_j ** 2)
|
||
|
print("std:", std)
|