#!/usr/bin/env python # coding: utf-8 # # Binder cordon probabilities # In[1]: get_ipython().run_line_magic('matplotlib', 'inline') import numpy as np import matplotlib.pyplot as plt from scipy.stats import binom import ipywidgets as W # In[2]: @W.interact(duration=(0.0, 4.0), interval=(12, 36), nodes=(1, 8)) def plotit(duration, interval, nodes=4): # probability that any given node is cordoned p = 1.0 * duration / interval p_inverse = 1 - p # n = for number of nodes available n = np.arange(0, nodes + 1) prob = binom.pmf(n, nodes, p) plt.semilogy(n, prob, '-o') plt.title("Probability that N nodes are cordoned at any given time") plt.xticks(n) plt.xlabel("cordoned nodes") plt.ylabel("P") print(f"Probability of N/{nodes} nodes cordoned:") for i, p_i in zip(n, prob): print(f"{i}: 1/{1/p_i:.2g}") # In[3]: plotit(duration=2, interval=24)