/* * * Copyright (c) 1994 * Hewlett-Packard Company * */ #ifndef STATIST_H #define STATIST_H extern "C" { double drand48 ( ); } double H(int n); class zipf { private: double ln_n; double c; //inverse of H(n) public: zipf(int size); void reset(int size); double p(int i); int random(); }; class exponential { private: double mu; public: exponential(double x); void reset(double x); double random(); }; class skewed_boolean { private: double r; public: skewed_boolean(double skew); void reset(double skew); int random(); }; class permutation { private: int n; int* Map; int* Inverse; void swap(int i, int j) { int t = Map[i]; Inverse[Map[i]] = j; Inverse[Map[j]] = i; Map[i] = Map[j]; Map[j] = t; } public: permutation(int size); ~permutation(); void randomize(); int map(int i) { return Map[i]; } int inverse(int i) { return Inverse[i]; } }; #endif