random walk
- To: mathgroup at smc.vnet.net
- Subject: [mg132471] random walk
- From: mdc.ferreira at campus.fct.unl.pt
- Date: Mon, 24 Mar 2014 00:20:31 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
RandomWalk[n_, d_] := NestList[(# + Table[Random[Real, {-1, 1}], {d}]) &, Table[0, {d}], n]; ThreeDim = RandomWalk[5000, 3]; I defined a security boundary for a random walk: p = 5000;(*steps*) tc = 15;(*cube edge length*) tp = 0.2; random = Accumulate[ Join[{RandomReal[{-tc, tc}/2, 3]}, RandomVariate[NormalDistribution[0, tp], {p, 3}]]]; periodizedWalk = Mod[random, tc, -tc/2]; splitPeriodizedWalk = Split[periodizedWalk, EuclideanDistance[#1, #2] < tc/2 &]; With[{cube = First[PolyhedronData["Cube"]]}, Graphics3D[{{Opacity[0.1], Scale[cube, tc]}, Line[random]}, Boxed -> False]] and now i want to obtain a sample of the random times at which the random walk crosses the boundary for the first time. Something like this: W = {}; For[i = 1, i <= 1000, i++, walk = RandomWalk[1000, 3]; finalPos = walk[[1001]]; EME = 1; While[True, finalPos = finalPos + walk[Random[]]; If[Norm[finalPos] > 15, Break[]]; EME = EME + 1; ]; W = Append[W, finalPos]; ] but i want these two codes to be related and my second code takes too much time to run. Would like some help please :)