#ifndef CA_UWATERLOO_ALUMNI_DWHARDER_DISK_REQUEST_EVENT_SUPPORT #define CA_UWATERLOO_ALUMNI_DWHARDER_DISK_REQUEST_EVENT_SUPPORT // Author: Douglas Wilhelm Harder // Copyright (c) 2012 by Douglas Wilhelm Harder. All rights reserved. #include #include /* * Choose a random track. */ int random_track( int const &n ) { // 31 // lrand48 returns a number 0 <= n < 2 return lrand48() % n; } /* * Return a value from an exponential distribution * * Generate a uniform random variable in (0, 1) and take the * inverse of the cummulative distribution function. */ int random_exponential( double lambda ) { double d; // Must avoid having d == 0 do { d = drand48(); } while ( d == 0.0 ); return static_cast( std::floor( -std::log(1 - d )/lambda + 0.5 ) ); } #endif