Here is a general process for making random smooth curves using physics principles:
1) Initialize a particle at the origin with some random velocity.
2) Apply a constant force which is orthogonal to the velocity.
3) Numerically integrate to calculate and plot the trajectory
4) Change the magnitude / sign of the force periodically, while maintaining the orthogonality
This ensures that the particle maintains a constant speed while continuously and smoothly changing its direction.
Plots and source code are below:
import math import random x = 0.0 y = 0.0 m = 1.0 vx = -10.0 + 20.0 * random.random() vy = -10.0 + 20.0 * random.random() ax = 0.0 ay = 0.0 t = 0.0 dt = 10.0**(-2.0) count = 0 Fbase = 50.0 Fmag = -Fbase + 2.0 * Fbase * random.random() while t <= 100.0: x = x + vx * dt y = y + vy * dt vx = vx + ax * dt vy = vy + ay * dt if (count % 100) == 0: Fmag = -Fbase + 2.0 * Fbase * random.random() Nx = -vy Ny = vx Nmag = math.hypot(vx,vy) Nx = Nx / Nmag Ny = Ny / Nmag Fx = Fmag * Nx Fy = Fmag * Ny ax = Fx / m ay = Fy / m print t,x,y t = t + dt count = count + 1