In [6]:
import sdm as sdmlib
import matplotlib.pyplot as plt
In [20]:
def run(n, H, r, d, steps=100):
"""
n = bits
H = number of hardlocations
r = radius
d = distance between bitstrings
"""
as1 = sdmlib.AddressSpace.init_random(n, H)
v = []
for _ in range(steps):
bs1 = sdmlib.Bitstring.init_random(n)
bs2 = bs1.copy()
bs2.flip_random_bits(d)
selected1 = as1.scan_thread2(bs1, r)
selected2 = as1.scan_thread2(bs2, r)
x = len(set(selected1) & set(selected2))
v.append(x)
return v
In [21]:
v = run(1000, 1000000, 451, 0)
In [22]:
mu = 1.0*sum(v)/len(v)
var = sum((x-mu)**2 for x in v)/len(v)
print('mu', mu)
print('var', var)
In [23]:
plt.figure(figsize=(8, 6), dpi=300)
plt.hist(v, bins='fd');
In [ ]: