ziggurat method for decreasing distributions. Marsaglia, Tsang, Journal of Statistical Software, 2000 If has negative is true the distribution is assumed to be symmetric with respect to 0, otherwise it is assumed to be from 0 to infinity. Struct based to avoid extra indirection when wrapped in a class (and it should be wrapped in a class and not used directly). Call style initialization avoided on purpose (this is a big structure, you don't want to return it)