/*************************************************************************** * Copyright (C) 1995, 1996, Jun Sun, jsun@junsun.net. * * * *************************************************************************** */ #include #include "random_variates.h" CUniform::CUniform(double a, double b) { assert(a<=b); _a = a; _b = b; } CUniform::CUniform(double *data, int num) { mythrow("CUniform::CUniform is not implemented!"); } CUniform::~CUniform() {} double CUniform::density(double x) { if ((x>=_a) && (x<=_b)) return 1.0/(_b - _a); else return 0.0; } double CUniform::distribution(double x) { if (x<_a) return 0.0; if (x>_b) return 1.0; return (x-_a) / (_b - _a); } double CUniform::sample() { return _a + (_b-_a)*randp->sample(); } double CUniform::probability(double x1, double x2) { assert(x1<=x2); return distribution(x2) - distribution(x1); } double CUniform::inverse_distribution(double y) { assert((0.0<=y) && (y<=1.0)); return _a + (_b - _a) * y; }