Re: sparsearray and random
- To: mathgroup at smc.vnet.net
- Subject: [mg71454] Re: sparsearray and random
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 19 Nov 2006 01:10:09 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <ejmlhi$gp1$1@smc.vnet.net>
Arkadiusz.Majka at gmail.com wrote:
> Hi,
>
> Why this:
>
> a = Random[Integer, {3, 7}]
> Normal[SparseArray[(i_ /; 3 â?¤ i â?¤ a) -> p, 10]]
>
> is not the same as this:
>
> Normal[SparseArray[(i_ /; 3 â?¤ i â?¤Random[Integer, {3, 7}] ) -> p,
> 10]]
Could you explain what you mean by "not the same"? For instance, in the
following expressions, only In[4] is not the same as the three other
inputs in term of behavior: In[4] checks i against a new random number
every time, whereas the other expressions keep the same upper bound
during the whole evaluation process.
In[1]:=
a = Random[Integer, {3, 7}]
Normal[SparseArray[i_ /; 3 <= i <= a -> p, 10]]
Out[1]=
6
Out[2]=
{0, 0, p, p, p, p, 0, 0, 0, 0}
In[3]:=
Normal[SparseArray[i_ /; 3 <= i <= Random[Integer, {3, 7}] -> p, 10]]
Out[3]=
{0, 0, p, p, p, 0, 0, 0, 0, 0}
In[4]:=
a := Random[Integer, {3, 7}]
Normal[SparseArray[i_ /; 3 <= i <= Evaluate[a] -> p, 10]]
Out[5]=
{0, 0, p, p, p, 0, p, 0, 0, 0}
In[6]:=
Normal[SparseArray[i_ /; 3 <= i <= Evaluate[Random[Integer, {3, 7}]] ->
p, 10]]
Out[6]=
{0, 0, p, p, p, p, 0, 0, 0, 0}
Regards,
Jean-Marc