MathGroup Archive 2011

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

Search the Archive

Re: average of the consecutive coin tosses

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

  • Prev by Date: Mathematica
  • Next by Date: Re: How to simplify a finite sum plus the next element?
  • Previous by thread: Re: average of the consecutive coin tosses
  • Next by thread: Re: average of the consecutive coin tosses