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

📄 krandom.cpp

📁 cmac实现
💻 CPP
字号:
// Random number generator from Numerical Recipes in C// developed by Knuth #include "krandom.h"#include <iostream.h>int seed;// knuth's subtractive generator long double ran3(int *idum){ static int inext, inextp;  static int ma[56];  static int iff=0;  int mj,mk;  int i, ii, k;  if (*idum < 0 || iff ==0) {    iff=1;    mj=MSEED-(*idum < 0 ? -*idum : *idum);    mj %= MBIG;    ma[55]=mj;    mk=1;    for (i=1;i<=54;i++) {      ii=(21*i) % 55;      ma[ii]=mk;      mk=mj-mk;      if (mk < MZ) mk +=MBIG;      mj=ma[ii];    }    for (k=1;k<=4;k++)      for (i=1;i<=55;i++){	     ma[i] -= ma[1+(i+30) % 55];	     if (ma[i] < MZ) ma[i] += MBIG;	  }    inext=0;    inextp=31;    *idum=1;    }    if (++inext == 56) inext=1;    if (++inextp == 56) inextp=1;    mj=ma[inext]-ma[inextp];    if (mj < MZ) mj += MBIG;    ma[inext]=mj;    return (mj*FAC);}//  return an integer between 0 and Range inclusive  int choose_random_int_value(int range){  long double rand_value,sum=0.0,interval;  int i;  rand_value = ran3(&seed);  interval = 1.0/(range+1);  for (i=0; i<=range; i++)    {      sum = sum + interval;      if (rand_value <= sum)		return (i);    }  return(0); // default value returned }long double choose_random_value(){	return (ran3(&seed));}void initialize_random_number_generator(int val){  seed = val; //  cout << "enter large negative integer as seed for random number" << endl; //  cin >> seed;   }

⌨️ 快捷键说明

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