TRIRND generates discrete random numbers from a triangular distribution.
Updated 25 Oct 2004

View License

randomValue = TRIRND(minVal, topVal, maxVal);

The distribution is defined by:
- a minimum and a maximum value
- a "top" value, with the highest probability.

The distribution is defined with zero probability at minVal-1 and maxVal+1, and with highest probability at topVal. Hence every value in the range (including the maximum and minimum values) have a non-zero probability to be included, whatever topValue is.

The output is a random integer.

randomMatrix = TRIRND(minVal, topVal, maxVal, nrow, ncolumns)

returns a (nrow x ncolumns) matrix of random integers.

* This is a numeric approximation, so use with care in "serious" statistical applications!
* Two different algorithms are implemented. One is efficient for large number of random points within a small range (maxVal-minVal), while the other is efficient for large range for reasonable number of points. For large ranges, there is a O(n^2) relation with regard to the product of range*number_of_points. When this product reach about a billion, the runtime reach several minutes.
* To inspect the resulting distribution, plot a histogram of the resulting random numbers, e.g. "hist(trirnd(1,87,100,10000,1),100)".

Written by L.Cavin, 20.10.2004, (c) CSE & ETHZ
This code is free to use and modify for non-commercial purposes.

Cite As

Laurent Cavin (2024). trirnd (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R13
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

The old algorithm was not efficient for generating random number in a large interval. A second algorithm has been added for covering such cases.