> I just did it the first and easiest way I thought of. Key is probably not a
> very efficient way to count the occurrences, but it is easy.

We endeavor to make "easy" fast.

Key _is_ the way to count # of occurrences in J and
there is special code for #/. (a JKT (Joey K. Tuttle) special).
It is especially fast for small range integers.

   100 timer '#/.~x' [ x=: 1e6 ?...@$ 50
0.00642733
   100 timer '#/.~x' [ x=: (1e6 ?...@$ 50){50 ?...@$ 2e9
0.0305596

The argument in the first benchmark has small range;
the one in the second benchmark has large range.  
"Large" or "small" is relative to the length of the argument.



----- Original Message -----
From: Don Guinn <[email protected]>
Date: Sunday, April 25, 2010 17:34
Subject: Re: [Jprogramming] Random Numbers with interation
To: Programming forum <[email protected]>

> That is really a significant improvement. I saw only 20% 
> improvement over
> the whole process where the random number generation was only a 
> small part.
> I just did it the first and easiest way I thought of. Key is 
> probably not a
> very efficient way to count the occurrences, but it is easy.
> 
> On Sun, Apr 25, 2010 at 5:29 PM, Roger Hui <[email protected]> wrote:
> 
> > There are other situations where the expression I suggested
> > is much more economical than the one you used.  For example:
> >
> >   ts=: 6!:2 , 7!:2...@]
> >
> >   10 ts '1e6 ?...@$ 2'
> > 0.0029846 1.04934e6
> >   10 ts '?1e6 $ 2'
> > 0.0132888 5.24352e6
> >
> > i.e. factor of 4 in time, factor of 5 in space.
> >
> >
> >
> > ----- Original Message -----
> > From: Don Guinn <[email protected]>
> > Date: Sunday, April 25, 2010 7:53
> > Subject: Re: [Jprogramming] Random Numbers with interation
> > To: Programming forum <[email protected]>
> >
> > > True. There is a lot that could be done to make it faster. But
> > > it was so
> > > much faster I didn't bother. And as you say, if you can't half
> > > the time,
> > > it's not worth doing. But I did try it. Looks like maybe 20% 
> faster> >
> > > On Sun, Apr 25, 2010 at 9:18 AM, Roger Hui 
> <[email protected]> wrote:
> > >
> > > > Slightly more economical to do 1...@#50 or 1...@$50
> > > > instead of ?1e6#50 .
> > > >
> > > >
> > > >
> > > > ----- Original Message -----
> > > > From: Don Guinn <[email protected]>
> > > > Date: Sunday, April 25, 2010 5:57
> > > > Subject: Re: [Jprogramming] Random Numbers with interation
> > > > To: Programming forum <[email protected]>
> > > >
> > > > > How about 0.07 seconds.
> > > > >
> > > > >    6!:2 '(1!:2&2)|."1]10{.\:~(>:~.z),.~
> > > #/.~z=.?1e6#50'> > 15 20400
> > > > >  8 20340
> > > > > 46 20287
> > > > > 13 20278
> > > > > 33 20249
> > > > > 39 20220
> > > > > 18 20219
> > > > > 29 20206
> > > > > 25 20197
> > > > >  9 20166
> > > > > 0.0658392
> > > > >
> > > > > On Sun, Apr 25, 2010 at 7:36 AM, smandula
> > > > > <[email protected]> wrote:
> > > > >
> > > > > >
> > > > > > Thank you kindly for your reply.
> > > > > > The statement of one million is an example, could be
> > > > > 1,000  or 50,000
> > > > > > iterations.
> > > > > > The random numbers being tested could be 1 to 50, or 1 
> to 100
> > > > > >
> > > > > > I have a basic program whereby I enter the maximum 
> iterations,> > > > in the
> > > > > > example 1,000,000
> > > > > > and a time clock starts, and a counter starts counting 
> up to
> > > > > the required
> > > > > > 1,000,000 intervals.
> > > > > >
> > > > > > Once, done the time duration shows, in my case 17 
> minutes, and
> > > > > a list of 10
> > > > > > highest occurrences
> > > > > > for these random numbers. i.e.
> > > > > > number 29     occurrences  204,984
> > > > > > number 26     occurrences  204,855
> > > > > > number 40     occurrences  204,732
> > > > > > number 17     occurrences  204,629
> > > > > > Number  1     
> occurrences  204,480
> > > > > >
> > > > > > I would appreciate any input from the forum, 
> especially for
> > > > > faster times
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to