> > > > > It turns out that I have the following x > > > > x=a + b * ln ( 2*(U*(F(upper)-F(low)) + F(low))); for x <a > > > > x=a - b * ln ( 2*(1-U*(F(upper)-F(low)) - F(low))); for x >= a >
I should be clearer about this. I think F(upper) can take two values for the case of x< a and x>=a (similarly for F(low)) so I should have write x=a + b * ln ( 2*(U*(F(upper1)-F(low1)) + F(low1))); for x <a x=a - b * ln ( 2*(1-U*(F(upper2)-F(low2)) - F(low2))); for x >= a For your suggestion, if I understand you correcly, if I want to use a more restricted range as suggested then x=a + b * ln ( 2*(U) ); for x <a x=a - b * ln ( 2*(1-U)); for x >= a where U ~ U(low_bound, Up_bound) and low_bound=1/2 Exp[-A/b] where A is the lower truncation limit you desire for the Laplace distribution and pick the Up_bound=1 - 1/2Exp[B/b] where B is the upper truncation limit. Please let me know whether I got it right or not. Thank you so much. Regards, Su > > I don't see something obviously wrong but I think your algorithm can be > substantially simplified. Instead of generating an uniform deviate over > (0,1) how about using a more restricted range. Pick the lower bound to be > > 1/2 Exp[-A/b] where A is the lower truncation limit you desire for the > Laplace distribution and pick the upper bound to be > > 1 - 1/2Exp[B/b] where B is the upper truncation limit. > > the return x = F[U] where U is the uniform deviate selected between the > two limits above > . . ================================================================= Instructions for joining and leaving this list, remarks about the problem of INAPPROPRIATE MESSAGES, and archives are available at: . http://jse.stat.ncsu.edu/ . =================================================================
