/* Copyright (C) 2009, 2014 GraphicsMagick Group This program is covered by multiple licenses, which are described in Copyright.txt. You should have received a copy of Copyright.txt with this package; otherwise see http://www.graphicsmagick.org/www/Copyright.html. Random number generator (semi-public interfaces). Currently based on George Marsaglia's multiply-with-carry generator. This is a k=2 generator with a period >2^60. */ #ifndef _MAGICK_RANDOM_H #define _MAGICK_RANDOM_H #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif /* defined(__cplusplus) || defined(c_plusplus) */ typedef struct _MagickRandomKernel { magick_uint32_t z; magick_uint32_t w; } MagickRandomKernel; #define MAGICK_RANDOM_MAX 4294967295 /* Generate a random integer value (0 - MAGICK_RANDOM_MAX) */ MagickExport magick_uint32_t MagickRandomInteger(void); /* Generate a random double value (0.0 - 1.0) */ MagickExport double MagickRandomReal(void); #if defined(MAGICK_IMPLEMENTATION) /* Initialize the random kernel with suitable entropy */ MagickExport void InitializeMagickRandomKernel(MagickRandomKernel *kernel); /* Acquire the default random number kernel. Memory is owned by library and should not be freed. */ MagickExport MagickRandomKernel* AcquireMagickRandomKernel(); /* Initialize the random number generator system. */ extern void InitializeMagickRandomGenerator(); /* Destroy the random number generator system. */ extern void DestroyMagickRandomGenerator(); #endif /* defined(MAGICK_IMPLEMENTATION) */ #if defined(__cplusplus) || defined(c_plusplus) } #endif /* defined(__cplusplus) || defined(c_plusplus) */ #endif /* ifndef _MAGICK_RANDOM_H */ /* * Local Variables: * mode: c * c-basic-offset: 2 * fill-column: 78 * End: */