Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.35 KB | None | 0 0
  1. def getPrimes(n):
  2.     primes = list(range(2, n + 1))
  3.     for i in primes:
  4.         if i:
  5.             for j in range(2 * i - 2, n - 1, i):
  6.                 primes[j] = 0
  7.    
  8.     return [i for i in primes if i]
  9.  
  10. def probability(n, p, k):
  11.     return sps.binom(n, k) * (p ** k) * ((1 - p) ** (n - k))
  12.  
  13. def f(n, p):
  14.     return sum([prob(n, p, k) for k in getPrimes(n)])
  15.  
  16.  
  17. getPrimes считает все простые от 2 до n включительно
  18. probability считает вероятность P(X = k) X~Binomial(n, p)
  19. f считает сумму по всем простым этих вероятностей
  20.  
  21. for n in range(10, 101, 10):
  22.     prs = [round(primes_p(n, p), 3) for p in np.linspace(0.1, 0.9, 9)]
  23.     print(prs)
  24. этим циклом можно посчитать и вывести вероятности из f так, что по вдоль строки p меняется от 0.1 до 0.9 а вдоль столбцов n меняется от 10 до 100 с шагом в 10
  25.  
  26. fig = plt.figure(1, figsize=(10, 5))
  27. axes = fig.add_subplot(1, 1, 1)
  28.  
  29. [plt.plot(
  30.     range(10, 101, 10),
  31.     [round(primes_p(n, p), 3) for n in range(10, 101, 10)],
  32.     label = 'p = ' + str(round(p, 1))
  33. ) for p in np.linspace(0.1, 0.9, 9)]
  34.  
  35. axes.legend()
  36. plt.show()
  37.  
  38. а вот так можно все эти штуки нарисовать
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement