The code is for generating bead positions of a 3d polymer. It is getting into an infinite loop. I could not figure out the mistake.
import numpy as np
import math as m
atoms = 249
pos = [[]]
sigma = 1.0
pos[0] = [0, 0, 0]
for p in range(atoms):
md = 0.0
c = 0
n = p
while md < sigma:
rnd_vector = (2 * (np.random.rand(3))) - [1, 1, 1]
rnd_vector = np.round(rnd_vector, 6)
d = m.sqrt(sum(map(lambda x: x * x, rnd_vector)))
rnd_vector = [x / d for x in rnd_vector]
next_pos = [pos[p][x] + rnd_vector[x] for x in range(3)]
c += 1
for i in range(n):
temp = [rnd_vector[x] - pos[i][x] for x in range(3)]
td = m.sqrt(sum(map(lambda x: x * x, temp)))
if i == 0:
md = td
if td < md:
md = td
pos.append(next_pos)