1// Copyright 2005-2009 The RE2 Authors.  All Rights Reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Modified from Google perftools's tcmalloc_unittest.cc.
6
7#ifndef RE2_UTIL_RANDOM_H__
8#define RE2_UTIL_RANDOM_H__
9
10#include "util/util.h"
11
12namespace re2 {
13
14// ACM minimal standard random number generator.  (re-entrant.)
15class ACMRandom {
16 public:
17  ACMRandom(int32 seed) : seed_(seed) {}
18  int32 Next();
19  int32 Uniform(int32);
20
21  void Reset(int32 seed) { seed_ = seed; }
22
23 private:
24  int32 seed_;
25};
26
27}  // namespace re2
28
29#endif  // RE2_UTIL_RANDOM_H__
30