28 lines
861 B
Python
28 lines
861 B
Python
from network.network import is_valid_network, get_number_of_activated_antenna
|
|
|
|
def _get_all_possible_network(box_size):
|
|
'''returns all networks, broken or not'''
|
|
return range( 2**(box_size*box_size) )
|
|
|
|
|
|
def get_all_possible_network(box_size):
|
|
if box_size < 1:
|
|
return
|
|
for network in _get_all_possible_network(box_size):
|
|
if is_valid_network(network, box_size):
|
|
yield network
|
|
|
|
|
|
def _get_random_networks(n, box_size, random):
|
|
all_networks = list(get_all_possible_network(box_size))
|
|
n = min(n, len(all_networks))
|
|
return random.sample(all_networks, n), n
|
|
|
|
|
|
def estimate_number_of_activated_antenna(n, box_size, random):
|
|
networks, n = _get_random_networks(n, box_size, random)
|
|
estimate = 0
|
|
for network in networks:
|
|
estimate += get_number_of_activated_antenna(network)
|
|
return estimate / n
|