Analizziamo il caso in cui nella passeggiata sia scelta una direzione-verso $\theta$ nel piano $xy$ e una direzione-verso $\phi$ nel piano $xz$.
var pCumTheta=pTheta.map((sum => value => sum += value)(0));
var vTheta=new Array(n).fill().map(() => {aCaso=Math.random(); k=0; while (aCaso>pCumTheta[k]) k++; return k} );
var pCumPhi=pPhi.map((sum => value => sum += value)(0));
var vPhi=new Array(n).fill().map(() => {aCaso=Math.random(); k=0; while (aCaso>pCumPhi[k]) k++; return k} );
in modo che le posizioni
var p=[[0,0,0]];
for (var i=0; i<n; i++)
p.push([
p[i][0]+Math.cos(2*vPhi[i]*Math.PI/n)*Math.cos(2*vTheta[i]*Math.PI/n),
[p[i][1]+Math.cos(2*vPhi[i]*Math.PI/n)*Math.sin(2*vTheta[i]*Math.PI/n),
[p[i][2]+Math.sin(2*vPhi[i]*Math.PI/n)]);