1*35238bceSAndroid Build Coastguard Worker #ifndef _DERANDOM_H 2*35238bceSAndroid Build Coastguard Worker #define _DERANDOM_H 3*35238bceSAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker * drawElements Base Portability Library 5*35238bceSAndroid Build Coastguard Worker * ------------------------------------- 6*35238bceSAndroid Build Coastguard Worker * 7*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project 8*35238bceSAndroid Build Coastguard Worker * 9*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 10*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 11*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at 12*35238bceSAndroid Build Coastguard Worker * 13*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 14*35238bceSAndroid Build Coastguard Worker * 15*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 16*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 17*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 19*35238bceSAndroid Build Coastguard Worker * limitations under the License. 20*35238bceSAndroid Build Coastguard Worker * 21*35238bceSAndroid Build Coastguard Worker *//*! 22*35238bceSAndroid Build Coastguard Worker * \file 23*35238bceSAndroid Build Coastguard Worker * \brief Random number generation. 24*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/ 25*35238bceSAndroid Build Coastguard Worker 26*35238bceSAndroid Build Coastguard Worker #include "deDefs.h" 27*35238bceSAndroid Build Coastguard Worker 28*35238bceSAndroid Build Coastguard Worker DE_BEGIN_EXTERN_C 29*35238bceSAndroid Build Coastguard Worker 30*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*! 31*35238bceSAndroid Build Coastguard Worker * \brief Random number generator. 32*35238bceSAndroid Build Coastguard Worker * 33*35238bceSAndroid Build Coastguard Worker * Uses the Xorshift algorithm for producing pseudo-random numbers. The 34*35238bceSAndroid Build Coastguard Worker * values are generated based on an initial seed and the same seed always 35*35238bceSAndroid Build Coastguard Worker * produces the same sequence of numbers. 36*35238bceSAndroid Build Coastguard Worker * 37*35238bceSAndroid Build Coastguard Worker * See: http://en.wikipedia.org/wiki/Xorshift 38*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/ 39*35238bceSAndroid Build Coastguard Worker typedef struct deRandom_s 40*35238bceSAndroid Build Coastguard Worker { 41*35238bceSAndroid Build Coastguard Worker uint32_t x; /*!< Current random state. */ 42*35238bceSAndroid Build Coastguard Worker uint32_t y; 43*35238bceSAndroid Build Coastguard Worker uint32_t z; 44*35238bceSAndroid Build Coastguard Worker uint32_t w; 45*35238bceSAndroid Build Coastguard Worker } deRandom; 46*35238bceSAndroid Build Coastguard Worker 47*35238bceSAndroid Build Coastguard Worker void deRandom_init(deRandom *rnd, uint32_t seed); 48*35238bceSAndroid Build Coastguard Worker uint32_t deRandom_getUint32(deRandom *rnd); 49*35238bceSAndroid Build Coastguard Worker uint64_t deRandom_getUint64(deRandom *rnd); 50*35238bceSAndroid Build Coastguard Worker float deRandom_getFloat(deRandom *rnd); 51*35238bceSAndroid Build Coastguard Worker double deRandom_getDouble(deRandom *rnd); 52*35238bceSAndroid Build Coastguard Worker bool deRandom_getBool(deRandom *rnd); 53*35238bceSAndroid Build Coastguard Worker 54*35238bceSAndroid Build Coastguard Worker DE_END_EXTERN_C 55*35238bceSAndroid Build Coastguard Worker 56*35238bceSAndroid Build Coastguard Worker #endif /* _DERANDOM_H */ 57