std::piecewise_linear_distribution produces random floating-point numbers, which are distributed according to a linear probability density function within each of the several subintervals [bi, bi+1). The distribution is such that the probability density at each interval boundary is exactly the predefined value pi.

The probability density for any bi≤x<bi+1 is pi

bi+1-x

bi+1-bi

+ pi+1

x-bi

bi+1-bi

, where probability densities at interval boundaries pk are calculated as wk/S where S is the sum of all

1

2

(wk+wk+1)(bk+1−bk).

The set of interval boundaries bi and the set of weights at boundaries wi are the parameters of this distribution.