You can download this code by clicking the button below.
This code is now available for download.
This function simulates a simple random walk process, calculating the average distance, maximum distance, minimum distance, and the distance of each step in the walk.
Technology Stack : random, math, statistics, string, os, sys, time, datetime, subprocess, hashlib, json
Code Type : Function
Code Difficulty : Intermediate
def random_walk(n):
import random
import math
import statistics
import string
import random
import os
import sys
import time
import datetime
import subprocess
import hashlib
import json
def generate_random_string(length):
return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(length))
def calculate_distance(x1, y1, x2, y2):
return math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
def save_walk_data(data, filename):
with open(filename, 'a') as file:
file.write(json.dumps(data) + '\n')
walk_data = []
x, y = 0, 0
for _ in range(n):
direction = random.choice(['up', 'down', 'left', 'right'])
if direction == 'up':
y += 1
elif direction == 'down':
y -= 1
elif direction == 'left':
x -= 1
elif direction == 'right':
x += 1
walk_data.append((x, y))
average_distance = statistics.mean([calculate_distance(walk_data[i], walk_data[i-1]) for i in range(1, len(walk_data))])
max_distance = max([calculate_distance(walk_data[i], walk_data[i-1]) for i in range(1, len(walk_data))])
min_distance = min([calculate_distance(walk_data[i], walk_data[i-1]) for i in range(1, len(walk_data))])
distances = [calculate_distance(walk_data[i], walk_data[i-1]) for i in range(1, len(walk_data))]
save_walk_data({
'walk_data': walk_data,
'average_distance': average_distance,
'max_distance': max_distance,
'min_distance': min_distance,
'distances': distances
}, 'walk_data.json')
return average_distance, max_distance, min_distance, distances