# Random variable from truncated gumbel distribution

0

Hi there. What would be the easiest way to generate random variables following Truncated Gumbel Distribution in Gauss? For example, gumbel distribution with upper bound.

Thanks.

Huihui

0

Below is a function that calculates the inverse truncated Gumbel distribution.

```proc (1) = cdfGumbelTruncInv(p, a, b);
local tmp, x, index, size;
tmp = exp(-exp(b./a));
x = -a .* ln(-ln((1-tmp) .* p + tmp)) + b;

//check for p == 1
index = indexcat(p, (1-__macheps)|__infp);
if not scalmiss(index);
if rows(p) == 1;
size = maxc(rows(a)|rows(b));
retp(reshape(__infp, size, 1));
endif;
x[index] = __infp;
endif;
//check for p == 0
index = indexcat(p, __infn|(0+__macheps));
if not scalmiss(index);
if rows(p) == 1;
size = maxc(rows(a)|rows(b));
retp(zeros(size, 1));
endif;
x[index] = 0;
endif;
retp(x);
endp;
```

By passing uniform random numbers into this function you should get random numbers with the truncated Gumbel distribution.

```r = rndu(100, 1);
r_gumbel = cdfGumbelTruncInv(r, 1, 1);
```

0

Below is a function that calculates the inverse truncated Gumbel distribution.

```proc (1) = cdfGumbelTruncInv(p, a, b);
local tmp, x, index, size;
tmp = exp(-exp(b./a));
x = -a .* ln(-ln((1-tmp) .* p + tmp)) + b;

//check for p == 1
index = indexcat(p, (1-__macheps)|__infp);
if not scalmiss(index);
if rows(p) == 1;
size = maxc(rows(a)|rows(b));
retp(reshape(__infp, size, 1));
endif;
x[index] = __infp;
endif;
//check for p == 0
index = indexcat(p, __infn|(0+__macheps));
if not scalmiss(index);
if rows(p) == 1;
size = maxc(rows(a)|rows(b));
retp(zeros(size, 1));
endif;
x[index] = 0;
endif;
retp(x);
endp;
```

By passing uniform random numbers into this function you should get random numbers with the truncated Gumbel distribution.

```r = rndu(100, 1);
r_gumbel = cdfGumbelTruncInv(r, 1, 1);
```

• ### Aptech Systems, Inc. Worldwide Headquarters

Aptech Systems, Inc.
2350 East Germann Road, Suite #21
Chandler, AZ 85286

Phone: 360.886.7100
FAX: 360.886.8922

• ### Training & Events

Want more guidance while learning about the full functionality of GAUSS and its capabilities? Get in touch for in-person training or browse additional references below.

• ### Tutorials

Step-by-step, informative lessons for those who want to dive into GAUSS and achieve their goals, fast.

• ### Want to find out more?

Get a real answer from a real person

• ### Have a Specific Question?

Get a real answer from a real person

• Need Support?
• ### Support Plans

Premier Support and Platinum Premier Support are annually renewable membership programs that provide you with important benefits including technical support, product maintenance, and substantial cost-saving features for your GAUSS System or the GAUSS Engine.

• ### User Forums

Join our community to see why our users are considered some of the most active and helpful in the industry!