Re: average of the consecutive coin tosses

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

Interesting! Thank a lot, Darren. Best MP On Thu, Oct 6, 2011 at 10:48 AM, Darren Glosemeyer <darreng at wolfram.com>wrote: > 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>