MathGroup Archive 2007

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

Search the Archive

Re: neat way to program minimum of sum

  • To: mathgroup at smc.vnet.net
  • Subject: [mg75139] Re: [mg75072] neat way to program minimum of sum
  • From: anguzman at ing.uchile.cl
  • Date: Wed, 18 Apr 2007 05:03:55 -0400 (EDT)
  • References: <200704170008.UAA08409@smc.vnet.net>

Hello:
I think you mean:
f(t) = min{n>0 : X1 + ... + Xn > t}
I believe that your current implementation calls Random[] too many 
times. That is, it tries with a random list of "i" elements and if it 
doesn't fullfill the request in the while loop, generates another list 
of "i+1" elements.
Unless this feature is  absolutely necessary
I think that a more compact and efficient way could be this recursive 
definition:

f[t_?(# < 0 &)] = 0
f[t_?(#1 >= 0 & )] := 1 + f[t - Random[]];

It calls Random[] the strictly necessary number of times. The only 
problem is that it's defined as zero for negative values. I believe 
that these variables are called negative binomials.
Hope this could help


Atte. Andres Guzman




P. Kaminski" <cgenie at gmail.com> ha escrito:

> Hi
> I need to program the following function:
>
> f(t) = max{n>0 : X1 + ... + Xn > t}
>
> where Xi are some random numbers. I've done it using Module and Wile:
>
> x[i_]:=x[i]=Random[]
> f[t_]:=f[t]=Module[{i}, i=1; While[Total[Array[x, i]]<=t, i++]; Re=
turn[i-1]];
>
> This works but requires Module and three instructions within. Can it
> be simplified to a true one-liner, preferably with some functional
> programming trick?
>
> Thanks in advance,
> P. Kaminski
>
>



----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



  • Prev by Date: Re: differentiate a function of a function
  • Next by Date: Re: minmum of a function
  • Previous by thread: Re: neat way to program minimum of sum
  • Next by thread: Re: neat way to program minimum of sum