/*************************************************************************** * Copyright (C) 1995, 1996, Jun Sun, jsun@junsun.net. * * * *************************************************************************** */ /* implementation of class DUniform */ #include "random_variates.h" #include "macro.h" #include "assert.h" DUniform::DUniform(int i, int j) { assert(i<=j); _i = i; _j = j; } DUniform::DUniform(int *data, int num_data) { int i; _i=_j=data[0]; for(i=0;i_j)) return 0.0; else return 1.0/double(_j-_i+1); } double DUniform::distribution(double x) { if (x<_i) return 0.0; else if (x>=_j) return 1.0; else return (x - (double)_i + 1.0) / (double)(_j-_i+1); } int DUniform::sample() { return _i + (int)(randp->sample() * (_j-_i+1)); }