⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmmlcg.c

📁 speech signal process tools
💻 C
字号:
/*      name : pmmlcg.c      by:    Jonathan G. Fiscus      For:   605.412 Fall 1990      This set of routines below implement a PMMLCG linear conguential random      number generator given the following formula               5                    31      Z   =   7  *  Z          mod 2  -1       i             (i-1)*/#include <util/utillib.h>static int random_seed = 1;static int a=16807;static int m=0x7fffffff;static int q=127773;static int r=2836;void init_seed(int new_seed, int verbose){    random_seed = new_seed;    if (verbose){        printf("PMMLCG Initializing\n\n");        printf("PMMLCG Parameters:\n");        printf("    seed: %d\n",random_seed);        printf("       a: %d\n",a);        printf("       m: %d (%x)\n",m,m);        printf("       q: %d\n",q);        printf("       r: %d\n\n",r);    }}float pmmlcg(void){    int lo, hi, test;    hi = random_seed / q;    lo = random_seed % q;    test = (a*lo) - (r*hi);    if (test > 0)        random_seed = test;    else        random_seed = test + m;    return((float)random_seed/(float)m);}int pmmlcg_newseed(void){    pmmlcg();    return(random_seed);}int pmmlcg_seed(void){    return(random_seed);}float exp_dist(float beta){    return(-(beta*log(pmmlcg())));}float M_erlang(float beta, int M){    float product=1.0;    int i;    for (i=0; i<M; i++)        product *= pmmlcg();    return(-(beta/(float)M) * log(product));}int arbitrary_discrete_rv(float *prob_list, int num_prob){    float value;    int i;    value = pmmlcg();    for (i=0; i<num_prob; i++)        if (value <= prob_list[i])            return(i);    return(num_prob-1);}

⌨️ 快捷键说明

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