Extend and improve the examples for the random module
This commit is contained in:
parent
ac0720eaa4
commit
6befb64172
|
@ -345,8 +345,8 @@ Basic examples::
|
||||||
>>> randrange(0, 101, 2) # Even integer from 0 to 100 inclusive
|
>>> randrange(0, 101, 2) # Even integer from 0 to 100 inclusive
|
||||||
26
|
26
|
||||||
|
|
||||||
>>> choice('abcdefghij') # Single random element from a sequence
|
>>> choice(['win', 'lose', 'draw']) # Single random element from a sequence
|
||||||
'c'
|
'draw'
|
||||||
|
|
||||||
>>> deck = 'ace two three four'.split()
|
>>> deck = 'ace two three four'.split()
|
||||||
>>> shuffle(deck) # Shuffle a list
|
>>> shuffle(deck) # Shuffle a list
|
||||||
|
@ -370,8 +370,9 @@ Simulations::
|
||||||
>>> print(seen.count('tens') / 20)
|
>>> print(seen.count('tens') / 20)
|
||||||
0.15
|
0.15
|
||||||
|
|
||||||
# Estimate the probability of getting 5 or more heads from 7 spins
|
# Estimate the probability of getting 5 or more heads
|
||||||
# of a biased coin that settles on heads 60% of the time.
|
# from 7 spins of a biased coin that settles on heads
|
||||||
|
# 60% of the time.
|
||||||
>>> n = 10000
|
>>> n = 10000
|
||||||
>>> cw = [0.60, 1.00]
|
>>> cw = [0.60, 1.00]
|
||||||
>>> sum(choices('HT', cum_weights=cw, k=7).count('H') >= 5 for i in range(n)) / n
|
>>> sum(choices('HT', cum_weights=cw, k=7).count('H') >= 5 for i in range(n)) / n
|
||||||
|
@ -416,4 +417,27 @@ between the effects of a drug versus a placebo::
|
||||||
print(f'{n} label reshufflings produced only {count} instances with a difference')
|
print(f'{n} label reshufflings produced only {count} instances with a difference')
|
||||||
print(f'at least as extreme as the observed difference of {observed_diff:.1f}.')
|
print(f'at least as extreme as the observed difference of {observed_diff:.1f}.')
|
||||||
print(f'The one-sided p-value of {count / n:.4f} leads us to reject the null')
|
print(f'The one-sided p-value of {count / n:.4f} leads us to reject the null')
|
||||||
print(f'hypothesis that the observed difference occurred due to chance.')
|
print(f'hypothesis that there is no difference between the drug and the placebo.')
|
||||||
|
|
||||||
|
Simulation of arrival times and service deliveries in a single server queue::
|
||||||
|
|
||||||
|
from random import gauss, expovariate
|
||||||
|
|
||||||
|
average_arrival_interval = 5.6
|
||||||
|
average_service_time = 5.0
|
||||||
|
stdev_service_time = 0.5
|
||||||
|
|
||||||
|
num_waiting = 0
|
||||||
|
arrival = service_end = 0.0
|
||||||
|
for i in range(10000):
|
||||||
|
num_waiting += 1
|
||||||
|
arrival += expovariate(1.0 / average_arrival_interval)
|
||||||
|
print(f'{arrival:6.1f} arrived')
|
||||||
|
|
||||||
|
while arrival > service_end:
|
||||||
|
num_waiting -= 1
|
||||||
|
service_start = service_end if num_waiting else arrival
|
||||||
|
service_time = gauss(average_service_time, stdev_service_time)
|
||||||
|
service_end = service_start + service_time
|
||||||
|
print(f'\t\t{service_start:.1f} to {service_end:.1f} serviced')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue