/*--------------------------------------------------------------------------------
ランダム・シャッフル・サロゲート法
Random Shuffle (RS) Surrogate method
RS_surrogate.h
*--------------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>
#include <windows.h>
// 生成するサロゲートデータの数, number of surrogate data to be generated
#define SURROGATE_DATA_NUM 5
// 乱数の種, seed for random number
#define MT_SEED 111195
// #define MT_SEED 1219
// #define MT_SEED 125
// #define MT_SEED 1059
/*-----------------------------------------------------------------------*/
extern double *readdata( int *num );
extern int random_shuffle_surrogate( int num, double *data, double *RS );
/*-----------------------------------------------------------------------*/
/* Period parameters */
#define N 624
#define M 397
#define MATRIX_A 0x9908b0dfUL /* constant vector a */
#define UPPER_MASK 0x80000000UL /* most significant w-r bits */
#define LOWER_MASK 0x7fffffffUL /* least significant r bits */
/*-----------------------------------------------------------------------*/
extern double uniform_random_numbers( void );
extern double exponential( void );
extern double normal( void );
/*-----------------------------------------------------------------------*/
extern void init_genrand(unsigned long s);
extern void init_by_array(unsigned long init_key[], int key_length);
extern unsigned long genrand_int32(void);
extern long genrand_int31(void);
extern double genrand_real1(void);
extern double genrand_real2(void);
extern double genrand_real3(void);
extern double genrand_res53(void);
/*-----------------------------------------------------------------------*/