Yes, what I was attempting to state in my message when I said, '(my) f2' which further down in the message is defined as:

  f2 =: 3 : 'y * ?($y)$0'

to which your original response was correctly directed (thank you again). As usual with "timing discussions" - many angels dancing on the pin head here....

- joey



At 08:15  -0700 2008/07/01, Roger Hui wrote:
Timing is not everything.  In this case f2 is computing
something weird and possibly misleading:  All the
elements of a row are the same. e.g.

   f2 3 4$9
2.06843 2.06843 2.06843 2.06843
5.20443 5.20443 5.20443 5.20443
1.00311 1.00311 1.00311 1.00311
   f3 3 4$9
 3.36383 8.62184  6.76132 4.76392
 8.01329 7.10008 0.285073 3.84514
0.950537 6.16313 0.214141 3.56592



----- Original Message -----
From: "R.E. Boss" <[EMAIL PROTECTED]>
Date: Monday, June 30, 2008 23:56
Subject: RE: [Jprogramming] Random number generation
To: 'Programming forum' <[email protected]>

    f3=: 3 : 'y * ($y) [EMAIL PROTECTED] 0'
    f2=: 3 : 'y * ?(#y)#0'

    ts 'f2 Y' [Y=:1000 1000$9
 0.0098060407 8402944
    ts 'f3 Y'
 0.034617353 16781696


 R.E. Boss


 > -----Oorspronkelijk bericht-----
 > Van: [EMAIL PROTECTED] [mailto:programming-
 > [EMAIL PROTECTED] Namens Joey K Tuttle
 > Verzonden: maandag 30 juni 2008 19:41
 > Aan: Programming forum
 > Onderwerp: Re: [Jprogramming] Random number generation
 >
 > Interestingly, I see almost no change in speed/space between
 (my) f2 and
 > f3...
 >
 >     ts 'f2 1000 1000$9'
 > 0.231313 2.20224e7
 >     ts 'f3 1000 1000$9'
 > 0.235067 2.0974e7
 >
 > Well - I guess a million bytes in space saving is
 > nothing to sneeze at (used to be a lot of
 > memory...) so I applaud the optimization work you
 > have done!
 >
 > Thanks - joey
 >
 > At 10:08  -0700 2008/06/30, Roger Hui wrote:
 > >To gain more speed (and reduce space), use:
 > >
 > >f3=: 3 : 'y * ($y) [EMAIL PROTECTED] 0'
 > >
 > >[EMAIL PROTECTED] is supported by special code.  The difference
 > >is most striking for random booleans:
 > >
 > >    ts=: 6!:2 , 7!:[EMAIL PROTECTED]
 > >
 > >    ts '1e6 [EMAIL PROTECTED] 2'
 > >0.00275063 1.04934e6
 > >    ts '?1e6$2'
 > >0.00555685 5.24352e6
 > >
 > >
 > >
 > >----- Original Message -----
 > >From: Joey K Tuttle <[EMAIL PROTECTED]>
 > >Date: Monday, June 30, 2008 8:54
 > >Subject: RE: [Jprogramming] Random number generation
 > >To: Programming forum <[email protected]>
 > >Cc: 'Programming forum' <[email protected]>
 > >
 > >>  Not to quibble... but
 > >>
 > >>      f2 =: 3 : 'y * ?(#y)#0'
 > >>
 > >>  has a related trouble to the original post with
 > >>  argument rank > 1 ... f1 is actually better in
 > >>  extending "to work with arrays of any shape". To
 > >>  try to gain some speed, perhaps you really meant
 > >>  to say:
 > >>
 > > >>      f2 =: 3 : 'y * ?($y)$0'
 > >>
 > >>  - joey
 > >>
 > >>
 > >>  At 10:59  -0400 2008/06/30, Henry Rich wrote:
 > >>  >What you executed was:
 > >>  >
 > >>  >3 3 * ?0
 > >>  >
 > >>  >which is
 > >>  >
 > >>  >3 3 * (?0)
 > >>  >
 > >>  >in other words, you asked for one number, then
 multiplied it by
 > >>  3 twice.
 > >>  >
 > >>  >
 > >>  >You could have your verb apply to atoms by giving it
 a rank of 0:
 > >>  >
 > >>  >    f1 =: 3 : 'y * ?0'"0
 > >>  >
 > >>  >Or, you could design it to work with arrays of any shape:
 > >>  >
 > >>  >    f2 =: 3 : 'y * ?(#y)#0'
 > >>  >
 > >>  >Working with bigger arrays is faster, but perhaps
 not by enough
 > >>  >to be worth the trouble.  Depends on your
 application.> >>  >
 > >>  >Henry Rich
 > >>  >
 > >>  >
 > >>  >>  -----Original Message-----
 > >>  >>  From: [EMAIL PROTECTED]
 > >>  >>  [mailto:[EMAIL PROTECTED]
 On Behalf Of
 > >>  >>  Benoît Roesslinger
 > >>  >>  Sent: Monday, June 30, 2008 10:46 AM
 > >>  >>  To: [email protected]
 > >>  >>  Subject: [Jprogramming] Random number generation
 > > >>  >>
 > >>  >>  Hi,
 > >>  >>
 > >>  >>  I am new to J and when doing some
 experiments with random
 > >>  >>  number generation
 > >>  >>  I stumbled across the following behavior,
 which wasn't what
 > >>  >>  I'd expect :
 > >>  >>
 > >>  >>     f=: 3 : 'y * ?0'
 > >>  >>     f 3
 > >>  >>  2.91414
 > >>  >>     f 3
 > >>  >>  0.139888
 > >>  >>     f 3
 > >>  >>  0.990328
 > >>  >>
 > >>  >>  OK so far, but when I tried:
 > >>  >>
 > >>  >>     f 3 3
 > >>  >>
 > >>  >>  it gives me :
 > >>  >>
 > >>  >>  0.0403801 0.0403801 (same values!)
 > >>  >>
 > >>  >>  whereas I'd expect a behavior much like the
 one of '?'...
 > >>  >>  Is this behavior normal ?
 > >>  >>  Suppose I want to create a function to
 generate a random
 > >>  >>  deviate from a
 > >>  >>  distribution (normal for instance) with some
 parameters (mean
 > >>  >>  and sd for
 > >>  >>  instance) that will work in the same fashion
 as '?', ie
 > >>  it is
 > >>  >>  possible to
 > >>  >>  generate lots of random deviates at once
 using code
 > >>  such as :
 > >>  >>  distri 100 $
 > >>  >>  x, where x would represent parameters, what
 is the best
 > >>  way to go ?
 > >>  >>
 > >>  >>  Many thanks in advance!
 > >>  >>
 > >>  >>  Benoît.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to