Re: Simulation...Ooops
- To: mathgroup at smc.vnet.net
- Subject: [mg19418] Re: [mg19353] Simulation...Ooops
- From: "Mark E. Harder" <harderm at ucs.orst.edu>
- Date: Mon, 23 Aug 1999 13:57:24 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Roberto; Luckily, I decided to plot several runs of our simulation, and all I could get were Bear Markets! I made a programming error in ranStep[] which caused this. Here's a fix which behaves better: ranStep[]:= (sample=Random[Real,{0.,1.}]; If[ sample<N[1/6,20],Return[-1], If[sample>N[5/6,20],Return[1],Return[0] ] ] ); Nstep=6000; SeedRandom[]; data=Table[NestList[#+0.01*ranStep[]&,5,Nstep]]; The key change is only calculating the random number once per function call. The other changes I made were: 1. Increased precision in calculating partitions to 20-digits (probably not important). 2. re-seeding the generator with time-of-day. Also, I run the following to plot results: plotData={Table[i,{i,0,Nstep}],data}; ListPlot[Transpose[plotData ],Frame->True ] Buena Suerte! -mark -----Original Message----- From: Mark E. Harder <harderm at ucs.orst.edu> To: mathgroup at smc.vnet.net <mathgroup at smc.vnet.net> Subject: [mg19418] Re: [mg19353] Simulation >Roberto, > First, replace the Random[Integer,...] function with a user-defined >function ranStep, which returns -1 and 1 1/6 of the time and 0 the remainder >of the times (Press, et.al. "Numerical Recipes in Fortran" describe this >method of converting a uniform random distribution to one with unequal >probabilities): > >ranStep[]:=If[ > Random[Real,{0.,1.}]<N[1/6],Return[-1], > If[Random[Real,{0.,1.}]>N[5/6],Return[1],Return[0] ] ] > >Then use it in the statement you already wrote: > > >data=Table[NestList[#+0.01*ranStep[]&,5,100]] > >Out[113]= >{5,5,4.99,4.99,4.99,4.99,4.99,4.99,4.99,4.99,4.99,4.99,4.99,4.99,4.99,5.,5. , > >4.99,4.98,4.98,4.98,4.98,4.98,4.98,4.98,4.98,4.98,4.97,4.97,4.97,4.97,4.97, > >4.98,4.98,4.97,4.97,4.96,4.96,4.96,4.96,4.96,4.96,4.97,4.97,4.96,4.95,4.95, > >4.95,4.95,4.95,4.95,4.95,4.96,4.96,4.96,4.95,4.95,4.95,4.94,4.94,4.94,4.94, > >4.93,4.93,4.93,4.93,4.93,4.93,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.95, > >4.96,4.97,4.97,4.98,4.98,4.98,4.98,4.99,4.99,4.99,4.99,4.99,4.98,4.97,4.98, > 4.97,4.97,4.96,4.96,4.97,4.96,4.96,4.95,4.95} > >-mark > > > >-----Original Message----- >From: Roberto Diego <r-diego at develnet.es> To: mathgroup at smc.vnet.net >To: mathgroup at smc.vnet.net <mathgroup at smc.vnet.net> >Date: Friday, August 20, 1999 9:41 PM >Subject: [mg19418] [mg19353] Simulation > > >>Hi there, >> >>I need help on how the expression: >> >>data=Table[NestList[#+0.01*Random[Integer,{-1,1}]&,5,1000]]; >> >>could be modified in order to get -1 with probability 1/6, 0 with p 4/6 and >>1 with p 1/6 instead of 1/3,1/3,1/3 >> >>Thanks a lot >> >>Roberto Diego >>Sociedad de Bolsas >> >> >> >