// // 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. // #include "random_utils.h" #include #include namespace angle { // Seed from clock RNG::RNG() { long long timeSeed = std::chrono::system_clock::now().time_since_epoch().count(); mGenerator.seed(static_cast(timeSeed)); } // Seed from fixed number. RNG::RNG(unsigned int seed) : mGenerator(seed) { } RNG::~RNG() { } void RNG::reseed(unsigned int newSeed) { mGenerator.seed(newSeed); } int RNG::randomInt() { std::uniform_int_distribution intDistribution; return intDistribution(mGenerator); } int RNG::randomIntBetween(int min, int max) { std::uniform_int_distribution intDistribution(min, max); return intDistribution(mGenerator); } unsigned int RNG::randomUInt() { std::uniform_int_distribution uintDistribution; return uintDistribution(mGenerator); } float RNG::randomFloat() { std::uniform_real_distribution floatDistribution; return floatDistribution(mGenerator); } float RNG::randomFloatBetween(float min, float max) { std::uniform_real_distribution floatDistribution(min, max); return floatDistribution(mGenerator); } float RNG::randomNegativeOneToOne() { return randomFloatBetween(-1.0f, 1.0f); } } // namespace angle