Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Faster Random Walk Simulation ?!?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg66211] Re: Faster Random Walk Simulation ?!?
  • From: "Chris Chiasson" <chris.chiasson at gmail.com>
  • Date: Thu, 4 May 2006 05:20:47 -0400 (EDT)
  • References: <e39k1n$cmn$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Some ideas (do you really need that index of positions?)
In[1]:=
SeedRandom[5000]

In[2]:=
RandomWalk[value_?(GreaterEqual[1,#,
      0]&),boundaryA_?Positive]:=

MapIndexed[{#2[[1]]-1,#1}&,NestWhileList[#+If[Random[]>value,1,-1]\
&,0,Abs[#]<boundaryA&]]

In[3]:=
Timing[Table[RandomWalk[1/2,5],{i,1,10000}];]

Out[3]=
{2.36 Second,Null}

In[4]:=
Last/@RandomWalk[1/2,5]

Out[4]=
{0,-1,-2,-1,-2,-1,0,1,0,1,0,1,0,-1,0,-1,-2,-1,-2,-3,-4,-5}

In[5]:=
Clear[RandomWalk]

In[6]:=
SeedRandom[5000]

In[7]:=
RandomWalk[value_?(GreaterEqual[1,#,
      0]&),boundaryA_?Positive]:=NestWhileList[#+If[
    Random[]>value,1,-1]&,0,Abs[#]<boundaryA&]

In[8]:=
Timing[Table[RandomWalk[1/2,5],{i,1,10000}];]

Out[8]=
{1.438 Second,Null}

In[9]:=
RandomWalk[1/2,5]

Out[9]=
{0,-1,-2,-1,-2,-1,0,1,0,1,0,1,0,-1,0,-1,-2,-1,-2,-3,-4,-5}

In[10]:=
Clear[RandomWalk]

In[11]:=
SeedRandom[5000]

In[12]:=
RandomWalk[value_,boundaryA_]:=NestWhileList[#+If[Random[]>value,1,-1]&,0,Abs[\
#]<boundaryA&]

In[13]:=
Timing[Table[RandomWalk[1/2,5],{i,1,10000}];]

Out[13]=
{1.437 Second,Null}

In[14]:=
RandomWalk[1/2,5]

Out[14]=
{0,-1,-2,-1,-2,-1,0,1,0,1,0,1,0,-1,0,-1,-2,-1,-2,-3,-4,-5}

In[15]:=
Clear[RandomWalk]

In[16]:=
SeedRandom[5000]

In[17]:=
value=1/2

RandomWalk[boundaryA_]:=Block[{l={{

0,0}},x=0,i=0},While[boundaryA>x>-boundaryA,x+=If[Random[]>value,1,-1];
      l=Append[l,{++i,x}]];
    l]

Timing[Table[RandomWalk[5],{i,1,10000}];]

Out[17]=
\!\(1\/2\)

Out[19]=
{2.281 Second,Null}

In[20]:=
Last/@RandomWalk[5]

Out[20]=
{0,-1,-2,-1,-2,-1,0,1,0,1,0,1,0,-1,0,-1,-2,-1,-2,-3,-4,-5}


  • Prev by Date: Re: Beginner--Help on using FindRoot to solve the system of equations
  • Next by Date: Re: Evaluating integrals
  • Previous by thread: Re: Faster Random Walk Simulation ?!?
  • Next by thread: Re: Faster Random Walk Simulation ?!?