Re: average of the consecutive coin tosses

*To*: mathgroup at smc.vnet.net*Subject*: [mg121946] Re: average of the consecutive coin tosses*From*: Darren Glosemeyer <darreng at wolfram.com>*Date*: Fri, 7 Oct 2011 04:45:57 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*References*: <201110060818.EAA22381@smc.vnet.net>

On 10/6/2011 3:18 AM, michael partensky wrote: > Hi. > > What are the better ways of doing what this guy does very inefficiently for > the average of the consecutive coin tosses: > > tr = (flips = 1; (#/flips++)& /@ Accumulate[Table[toss, {1000}]]) // N); > > where > > toss= RandomInteger[]; > > Thanks > Michael When you want lots of random values, it is generally faster to get them all at once. In your example, we can also note that the denominators will just be a Range and take advantage of the listable nature of division, but we will want to make sure the values from Range are turned into floating point numbers to avoid exact arithmetic. Incorporating these ideas can make the computation much faster, as can be seen by timings for 1000 evaluations of each method: In[2]:= toss = RandomInteger[]; In[3]:= Do[(flips = 1; (#/flips++) & /@ Accumulate[Table[toss, {1000}]] //N), {1000}]; // Timing Out[3]= {2.683, Null} In[4]:= Do[Accumulate[RandomInteger[1, 1000]]/N[Range[1000]], {1000}]; // Timing Out[4]= {0.062, Null} Darren Glosemeyer Wolfram Research

**References**:**average of the consecutive coin tosses***From:*michael partensky <partensky@gmail.com>