| // |
| // Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // random_utils: |
| // Helper functions for random number generation. |
| // |
| |
| #ifndef UTIL_RANDOM_UTILS_H |
| #define UTIL_RANDOM_UTILS_H |
| |
| // TODO(jmadill): Rework this if Chromium decides to ban <random> |
| #include <random> |
| |
| namespace angle |
| { |
| |
| class RNG |
| { |
| public: |
| // Seed from clock |
| RNG(); |
| // Seed from fixed number. |
| RNG(unsigned int seed); |
| ~RNG(); |
| |
| void reseed(unsigned int newSeed); |
| |
| int randomInt(); |
| int randomIntBetween(int min, int max); |
| unsigned int randomUInt(); |
| float randomFloat(); |
| float randomFloatBetween(float min, float max); |
| float randomNegativeOneToOne(); |
| |
| private: |
| std::default_random_engine mGenerator; |
| }; |
| |
| } // namespace angle |
| |
| #endif // UTIL_RANDOM_UTILS_H |