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