123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Copyright 2014 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef TOOLS_IPC_FUZZER_MUTATE_RAND_UTIL_H_
- #define TOOLS_IPC_FUZZER_MUTATE_RAND_UTIL_H_
- #include <stddef.h>
- #include <stdint.h>
- #include <random>
- namespace ipc_fuzzer {
- extern std::mt19937* g_mersenne_twister;
- void InitRand();
- inline uint32_t RandU32() {
- return (*g_mersenne_twister)();
- }
- inline uint64_t RandU64() {
- return (static_cast<uint64_t>(RandU32()) << 32) | RandU32();
- }
- inline double RandDouble() {
- uint64_t rand_u64 = RandU64();
- return *reinterpret_cast<double*>(&rand_u64);
- }
- inline uint32_t RandInRange(uint32_t range) {
- return RandU32() % range;
- }
- inline bool RandEvent(uint32_t frequency) {
- return RandInRange(frequency) == 0;
- }
- inline size_t RandElementCount() {
- return RandU32() % 10;
- }
- } // namespace ipc_fuzzer
- #endif // TOOLS_IPC_FUZZER_MUTATE_RAND_UTIL_H_
|