From 2a01de329a2bc71c30b40bf082bf663fd8863b9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petar=20Kapri=C5=A1?= Date: Tue, 25 Feb 2025 22:36:23 +0100 Subject: [PATCH] Add results of exercise 21 --- chapter-1/ex-21-Figure_1.png | Bin 0 -> 24675 bytes chapter-1/ex-21-Figure_2.png | Bin 0 -> 25352 bytes chapter-1/ex-21.py | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 chapter-1/ex-21-Figure_1.png create mode 100644 chapter-1/ex-21-Figure_2.png create mode 100755 chapter-1/ex-21.py diff --git a/chapter-1/ex-21-Figure_1.png b/chapter-1/ex-21-Figure_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb40521894928eb6aed1af94097d467cc53984a0 GIT binary patch literal 24675 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 Nw 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 literal 0 HcmV?d00001 diff --git a/chapter-1/ex-21-Figure_2.png b/chapter-1/ex-21-Figure_2.png new file mode 100644 index 0000000000000000000000000000000000000000..77a8313fe4f0650bbc72489e7d89ae70f438ff1c GIT binary patch literal 25352 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 literal 0 HcmV?d00001 diff --git a/chapter-1/ex-21.py b/chapter-1/ex-21.py new file mode 100755 index 0000000..7f2d0de --- /dev/null +++ b/chapter-1/ex-21.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python + +import matplotlib.pyplot as plt +import numpy as np +import random + +p = 0.3 +n = 1000 + +def experiment(p, n): + proportion = np.empty(1000) + heads = 0 + random.seed() + + for i in range(n): + if random.random() < p: + heads += 1 + proportion[i] = heads/(i+1) + + f1 = plt.figure(1) + return proportion + +xaxis = np.arange(1,1001) +tosses = np.empty(1000) +proportion1 = experiment(0.3, 1000) +proportion2 = experiment(0.03, 1000) + +f1 = plt.figure(1) +plt.plot(xaxis, proportion1) + +f2 = plt.figure(2) +plt.plot(xaxis, proportion2) + +plt.show()