random.h

来自「改算法基于遗传算法」· C头文件 代码 · 共 72 行

H
72
字号
#ifndef RAND_H#define RAND_H//#include <stdlib.h>#include <math.h>#ifndef	M_PI#define	M_PI ((double)3.14159265358979323)#endif#ifndef RAND_MAX #define RAND_MAX 2147483647#endif#define RAND16_MAX 65535#ifdef __cplusplusextern "C" {#endif#define STATE_SIZE 97const double randbit = 1.0 /16777216.0;class random_number{    unsigned int ni;    unsigned int nj;    double u[STATE_SIZE];    double c, cd, cm;    unsigned int collapse (int anyint, unsigned int size);    void start_random_number(int seed_a, int seed_b);    double next_random_number(void);public:    random_number(int );    random_number();    double    urand(double r = 1.0) {	return r*next_random_number();    }    double nrand(void){      static int    fl_rand = 0;      static double    x1;      static double    x2;      double r1;      double r2;            if (!fl_rand) {        fl_rand = 1;        r1 = next_random_number() + randbit; /* (0,1] */        r2 = next_random_number();      /* [0,1) */        x1 = (double)sqrt(-2 * (double)log(r1));        x2 = (double)(2 * M_PI * r2);        return x1 * (double)cos(x2);      }      else {        fl_rand = 0;        return x1 * (double)sin(x2);      }    }    double cauchy(double scale=1.0){      return  tan(3.14159265*(next_random_number() - 0.5))*scale;      //      return  tan(3.14159*(next_random_number()))*scale;    }};#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?