Passeggiate casuali

Con memoria, a passo costante in più direzioni senza retrocedere: simulazioni.

Analizziamo il caso in cui l’ubriaco si muove, con passo costante, in una delle direzioni-versi in cui è diviso l'angolo giro e con data probabilità di seguire ciascuna, evitando di retrocedere, ciò che comunque non può succedere quando è dispari il numero di direzioni-versi in cui è diviso l'angolo giro.

function sceltaPesata(pesi,k){ //sceglie l'indice della lista dei pesi, tranne k se indicato, a secondo del peso if (k!=undefined) pesi.splice(k,1); var sum = pesi.reduce((s,x)=> s+x,0); var p = pesi.map(p=>p/sum); var r = Math.random(); var pCum = 0; for (var i = 0; i < pes.length; i++) { pCum += p[i]; if (r < pCum) return (k===undefined || i < k)? i: i+1 }; return pesi.length-1 } n_d = pesi.length; var P = [[0,0]]; var d = sceltaPesata(pesi); P.push([Math.cos(d*2*Math.PI/n_d), Math.sin(d*2*Math.PI/n_d)]) for(var i = 1; i < n; i++){ d = (n_d % 2 != 0)? sceltaPesata(pesi): sceltaPesata(pesi,(d+Math.floor(n_d/2))%n_d); P.push([P[i][0]+Math.cos(d*2*Math.PI/n_d), P[i][1]+Math.sin(d*2*Math.PI/n_d)]) }

Se è il numero dei passi da compiere nelle varie direzioni
ciascuna con probabilità .


Con un piccolo aggiustamento si possono realizzare passeggiate casuali in cui il passo non avviene mai nel verso di quello precedente.

Se è il numero dei passi da compiere nelle varie direzioni
ciascuna con probabilità .


❮❮ ❯❯