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