def get_path(drunk, step_number): locations = [] d = drunk() f = Field() f.add_drunk(d, Location(0, 0)) for step in range(step_number): f.move_drunk(d) locations.append(f.get_location(d)) return locations
def sim_walks(num_steps, num_trials, dClass): drunkard = dClass() origin = Location(0, 0) distances = [] for t in range(num_trials): f = Field() f.add_drunk(drunkard, origin) distances.append(round(walk(f, drunkard, num_steps), 1)) return distances
def get_final_locations(step_number, trial_number, drunk): locations = [] d = drunk() for t in range(trial_number): f = Field() f.add_drunk(d, Location(0, 0)) for s in range(step_number): f.move_drunk(d) locations.append(f.get_location(d)) return locations
def walk_simulation(steps, numbers_of_trys, type_of_drunk): drunk_man = type_of_drunk(name='Oscarin') origin = Coordinate(0, 0) distances = [] for _ in range(numbers_of_trys): field = Field() field.add_drunk(drunk_man, origin) walk_simulation = walk(field, drunk_man, steps) distances.append(round(walk_simulation, 1)) return distances
def simulate_walk(steps: int, number_tries: int, drunk_type: Drunk) -> list: drunk = drunk_type(name='Alex') origin = Coordinate(0, 0) distances_walked = [] for _ in range(number_tries): field = Field() field.add_drunk(drunk, origin) walk_simulation = walked(field, drunk, steps) distances_walked.append(round(walk_simulation, 1)) return distances_walked
def simulate_walks(step_number, trial_number, drunk): """step_number:0以上の整数 trial_number:正の整数 drunk:Drunkのサブクラスのインスタンス step_number回移動するランダムウォークをtrial_number回シミュレートする。 各シミュレートの初期位置と終了位置をリストとして返す""" homer = drunk() origin = Location(0, 0) distances = [] for trial in range(trial_number): f = Field() f.add_drunk(homer, origin) distances.append(round(walk(f, homer, step_number), 1)) return distances
def simulate_walk(steps, times_attempts, traditional_drunk): drunk = traditional_drunk( name='Daniel' ) #inicializar variable/recibiendolo como parametro/agnostica origin = Coordinate(0, 0) distances = [] #variables/guardar distancias for _ in range(times_attempts ): # _ <no se utiliza la variable/solo se da un rango field = Field() #la simulacion field.add_drunk(drunk, origin) #campo añadir borracho simulate_walk = walk(field, drunk, steps) #funcion auxiliar distances.append(round(simulate_walk, 1)) #añadir a las distancias, la simulacion return distances
def sim_walks(num_steps, num_trials, dClass): drunkard = dClass() origin = Location(0, 0) distances = [] end_locations = [] for t in range(num_trials): f = Field() f.add_drunk(drunkard, origin) end_location, distance = walk(f, drunkard, num_steps) distances.append(round(distance, 1)) end_locations.append([end_location.x, end_location.y]) return end_locations, distances
def main(): walk_steps = [10, 100, 1000] cantidad = 100 myfield = Field() myfield.add_drunk(Drunk('Martha Peña')) # myfield.add_drunkman(Drunkman('Michael Reynosa')) # myfield.add_drunkman(Drunkman('Katya Peña')) # myfield.add_drunkman(Drunkman('Ronald Marroquin')) # myfield.add_drunkman(Drunkman('Tatiana Peña')) for drunk in myfield.get_drunks(): walking_media_distances = [] print(f'Prueba con borracho {drunk.name}') print(f'{"*" * 75}') for steps in walk_steps: print(f'Prueba con {steps} paso/os') walking_distances = [] for _ in range(cantidad): origin = Position(drunk.position.x, drunk.position.y) myfield.walk(drunk, steps) distance = drunk.position.distance(origin) walking_distances.append(distance) drunk.reset() walking_media_distance = round(sum(walking_distances) / len(walking_distances), 2) walking_media_distances.append(walking_media_distance) print(f'Media: {walking_media_distance}') print(f'Cantidad de veces: {len(walking_distances)}') print(f'Maximo: {max(walking_distances)}') print(f'Minimo: {min(walking_distances)}') print(f'{"=" * 65}') drunk_history = myfield.get_history(drunk) graph_path([p.x for p in drunk_history], [p.y for p in drunk_history]) for i, p in enumerate(drunk_history): print(f'Paso {i} X={p.x} Y={p.y}') # graph(walk_steps, walking_media_distances) print('\n')