MathGroup Archive 2007

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

Search the Archive

Re: Question about RandomInteger

  • To: mathgroup at smc.vnet.net
  • Subject: [mg83198] Re: Question about RandomInteger
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Wed, 14 Nov 2007 04:54:39 -0500 (EST)
  • Organization: The Open University, Milton Keynes, UK
  • References: <fhbo7s$rba$1@smc.vnet.net>

John wrote:

> Needs["MultivariateStatistics`"]
> n=1000
> pdpd={1/6,1/6,1/6,1/6,1/6,1/6}
> pdid={1/7,1/5,1/6,1/6.1/6,33/210}
-----------------------^
Syntax error: must be a comma here.

> u=RandomInteger[MultinomialDistribution[n,pdpd],1]
> v=RandomInteger[MultinomialDistribution[n,pdid],1]
> 
> All of the above works.
> 
> But u and v appear more than once in subsequent calculations, and

By that, do you mean just u and v, or their definitions too?

> RandomInteger reexecutes at each appearance. The reexecutions change
> the values of u and v, and that is not what I want to happen.

Hum, if the code you posted is really the code used in your application, 
first it has a syntax error, second, as written, the values of u and v 
cannot change. Why? Because you have used Set, i.e. =, which evaluates 
the right-hand side (RHS) immediately and only once, whereas SetDelayed, 
i.e. :=, does not evaluate the RHS immediately but does so whenever the 
left-hand side (LHS) is called subsequently.

You can see what is going on in the example below: u and v are defined 
with Set whereas uu and vv are defined with SetDelayed. When call ten 
times, you can check that the values of u and v are always the same 
contrary to those of uu and vv that change at every call.

Therefore, either the actual code use SetDelayed or the definition of u 
and v occurs in several places.

In[1]:= Needs["MultivariateStatistics`"]
n = 1000
pdpd = {1/6, 1/6, 1/6, 1/6, 1/6, 1/6}
pdid = {1/7, 1/5, 1/6, 1/6, 1/6, 33/210}
u = RandomInteger[MultinomialDistribution[n, pdpd], 1]
v = RandomInteger[MultinomialDistribution[n, pdid], 1]

Out[2]= 1000

Out[3]= {1/6, 1/6, 1/6, 1/6, 1/6, 1/6}

Out[4]= {1/7, 1/5, 1/6, 1/6, 1/6, 11/70}

Out[5]= {{163, 183, 178, 163, 158, 155}}

Out[6]= {{137, 206, 170, 148, 165, 174}}

In[7]:= Table[{u, v}, {10}]

Out[7]= {{{{163, 183, 178, 163, 158, 155}}, {{137, 206, 170, 148, 165,
      174}}}, {{{163, 183, 178, 163, 158, 155}}, {{137, 206, 170, 148,
     165, 174}}}, {{{163, 183, 178, 163, 158, 155}}, {{137, 206, 170,
     148, 165, 174}}}, {{{163, 183, 178, 163, 158, 155}}, {{137, 206,
     170, 148, 165, 174}}}, {{{163, 183, 178, 163, 158, 155}}, {{137,
     206, 170, 148, 165, 174}}}, {{{163, 183, 178, 163, 158,
     155}}, {{137, 206, 170, 148, 165, 174}}}, {{{163, 183, 178, 163,
     158, 155}}, {{137, 206, 170, 148, 165, 174}}}, {{{163, 183, 178,
     163, 158, 155}}, {{137, 206, 170, 148, 165, 174}}}, {{{163, 183,
     178, 163, 158, 155}}, {{137, 206, 170, 148, 165, 174}}}, {{{163,
     183, 178, 163, 158, 155}}, {{137, 206, 170, 148, 165, 174}}}}

In[8]:= uu := RandomInteger[MultinomialDistribution[n, pdpd], 1]
vv := RandomInteger[MultinomialDistribution[n, pdid], 1]

In[10]:= Table[{uu, vv}, {10}]

Out[10]= {{{{169, 164, 174, 175, 166, 152}}, {{126, 204, 158, 184,
     184, 144}}}, {{{166, 171, 156, 177, 163, 167}}, {{153, 197, 162,
     169, 174, 145}}}, {{{197, 166, 161, 162, 153, 161}}, {{128, 184,
     163, 183, 177, 165}}}, {{{163, 167, 168, 184, 147, 171}}, {{162,
     183, 155, 169, 147, 184}}}, {{{179, 153, 183, 160, 163,
     162}}, {{140, 201, 157, 169, 172, 161}}}, {{{155, 165, 168, 173,
     160, 179}}, {{137, 213, 170, 143, 172, 165}}}, {{{159, 168, 158,
     163, 171, 181}}, {{138, 185, 175, 180, 170, 152}}}, {{{183, 164,
     147, 186, 169, 151}}, {{156, 206, 166, 163, 165, 144}}}, {{{175,
     170, 146, 155, 175, 179}}, {{135, 184, 170, 180, 175,
     156}}}, {{{164, 171, 145, 164, 181, 175}}, {{143, 182, 162, 190,
     162, 161}}}}

Regards,
-- 
Jean-Marc


  • Prev by Date: Re: Compile a Module
  • Next by Date: Re: Zoom2D and GetGraphicsCoordinates palettes combined
  • Previous by thread: Re: Question about RandomInteger
  • Next by thread: Compile a Module