12ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// Copyright 2005-2009 The RE2 Authors. All Rights Reserved. 22ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// Use of this source code is governed by a BSD-style 32ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// license that can be found in the LICENSE file. 42ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 52ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// Modified from Google perftools's tcmalloc_unittest.cc. 62ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 72ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#ifndef RE2_UTIL_RANDOM_H__ 82ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define RE2_UTIL_RANDOM_H__ 92ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 102ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#include "util/util.h" 112ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 122ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonnamespace re2 { 132ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 142ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// ACM minimal standard random number generator. (re-entrant.) 152ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonclass ACMRandom { 162ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson public: 172ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson ACMRandom(int32 seed) : seed_(seed) {} 182ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson int32 Next(); 192ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson int32 Uniform(int32); 202ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 212ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson void Reset(int32 seed) { seed_ = seed; } 222ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 232ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson private: 242ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson int32 seed_; 252ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson}; 262ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 272ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson} // namespace re2 282ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 292ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#endif // RE2_UTIL_RANDOM_H__ 30