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>
- average of the consecutive coin tosses