-
Notifications
You must be signed in to change notification settings - Fork 0
/
synthesize_data.py
39 lines (32 loc) · 1.09 KB
/
synthesize_data.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import csv
import numpy as np
n = 9
def will_live (row):
alive = row[0]
neighbours = row[1:]
num_of_neighbours = sum(neighbours)
if num_of_neighbours < 2:
return 0
if num_of_neighbours == 2:
return alive
if num_of_neighbours == 3:
return 1
if num_of_neighbours > 3:
return 0
def make_random_subset_of_cases (m):
noise = np.random.choice([0, 1], size=(m, n), p=[2./3, 1./3])
with open('random_subset_of_cases.csv', 'wb') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_MINIMAL)
wr.writerow([m, n, 'dead', 'alive'])
for row in noise:
row = row.tolist()
wr.writerow(row + [will_live(row)])
make_random_subset_of_cases(200)
def make_all_possible_cases ():
with open('all_possible_cases.csv', 'wb') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_MINIMAL)
wr.writerow([2**n, n, 'dead', 'alive'])
for i in range(0, 2**n):
row = map(int, list("{0:b}".format(i).zfill(n)))
wr.writerow(row + [will_live(row)])
make_all_possible_cases()