Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

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

Search the Archive

Re: newbie is looking for a customDistribution function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg50395] Re: newbie is looking for a customDistribution function
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Thu, 2 Sep 2004 04:34:19 -0400 (EDT)
  • Organization: Universitaet Leipzig
  • References: <ch3o86$t96$1@smc.vnet.net>
  • Reply-to: kuska at informatik.uni-leipzig.de
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

you as for the inverse method to generate random numbers.
In you case you want to have random numbers due to the distribution

f[n_]:=Plus @@ Take[distro,n]/(Plus @@ distro)

because the table you call "distro" is the density and not the
distribution function.

f[n] is a real number between [0,1) and if you wish to create
random numbers with this distribution function you can generate
a uniform random number q and look for the interval 
f[m-1]<= q <f[m]. The integer value m with is you random variable
with distribution function f.

Regards
  Jens

János wrote:
> 
> Hi,
> 
> I looked for it in the archives, but found none.  I am looking for ways
> to create a custom distribution, which I can call as a function.  Here
> is an example for illustration.  Let's say I have a list created from a
> 4 elements alphabet  {a,b,c,d}:
> 
> In[1]:=
> lst={a,a,b,c,a,d,a,c,c,a}
> 
> Out[1]=
> {a,a,b,c,a,d,a,c,c,a}
> 
> Distribute gives me - thanks David Park - all the two element
> combinations of {a,b,c,d}
> 
> In[11]:=
> twocombs=Distribute[Table[{a,b,c,d},{2}],List]
> 
> Out[11]=
> {{a,a},{a,b},{a,c},{a,d},{b,a},{b,b},{b,c},{b,d},{c,a},{c,b},{c,c},{c,d}
> ,{
>    d,a},{d,b},{d,c},{d,d}}
> 
> I can count the occurrence of an element of twocombs in lst with the
> following function:
> 
> occuranceCount[x_List] := Count[Partition[lst, 2, 1], x]
> 
> Mapping this function over twocombs gives me the number of occurances
> of elements of twocombs in lst:
> 
> In[12]:=
> distro=Map[occuranceCount,twocombs]
> 
> Out[12]=
> {1,1,1,1,0,0,1,0,2,0,1,0,1,0,0,0}
> 
> It shows that for example {c,a} occurs twice, {d,a} occurs once and
> {d,c} or {d,d} never occur.
> 
> Now, I would like to create a distribution function called
> twocombsLstDistribution which I could call and it would give me back
> elements of twocombs with the probability as they occur in distro, that
> is for on average I would get twice as much {c,a}s as {d,a}s and never
> get {d.c} or {d,d}.
> 
> How can I craft that ?
> 
> /Of course I need it for an arbitrary but finite length string lst over
> a fixed length alphabet {a,b,c,d,....} for k-length elements of kcombs,
> and it has to be super fast  :).  My real lst is between 30,000 and
> 70,000 element long over a four element alphabet and I am looking for k
> between 5 and a few hundred. /
> 
> Thanks ahead,
> János
> -------------------------------------------------
> People never lie so much as after a
> hunt, during a war or before an election
> - Otto von Bismarck -


  • Prev by Date: Re: newbie is looking for a customDistribution function
  • Next by Date: Re: Problem with a system of equations describing an exposure to lead...
  • Previous by thread: Re: Re: newbie is looking foracustomDistributionfunction
  • Next by thread: Re: newbie is looking for a customDistribution function