#ifndef _H_OVRandom
#define _H_OVRandom

#include "OVHeap.h"

typedef struct _OVRandom OVRandom;

OVRandom *OVRandom_NewBySeed(OVHeap * heap, ov_uint32 seed);
OVRandom *OVRandom_NewByArray(OVHeap * heap, ov_uint32 init_key[], ov_int32 key_length);

void OVRandom_Del(OVRandom * I);


/* generates a random number on [0,0xffffffff]-interval */
ov_uint32 OVRandom_Get_int32(OVRandom * I);


/* generates a random number on [0,0x7fffffff]-interval */
ov_int32 OVRandom_Get_int31(OVRandom * I);


/* generates a random number on [0,1]-real-interval */
ov_float64 OVRandom_Get_float64_inc1(OVRandom * I);


/* generates a random number on [0,1)-real-interval */
ov_float64 OVRandom_Get_float64_exc1(OVRandom * I);


/* generates a random number on (0,1)-real-interval */
ov_float64 OVRandom_Get_float64_exc01(OVRandom * I);

#endif
