コード例 #1
0
ファイル: random_walk.py プロジェクト: KojiNagahara/Python
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
コード例 #2
0
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
コード例 #3
0
ファイル: random_walk.py プロジェクト: KojiNagahara/Python
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
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
0
ファイル: random_walk.py プロジェクト: KojiNagahara/Python
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
コード例 #7
0
ファイル: random_path.py プロジェクト: DannielF/Python
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
コード例 #8
0
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
コード例 #9
0
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')