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

📄 使用线性同余算法产生伪随机数c语言模拟.txt

📁 c语言的一些常见的算法以及思考和改进的文章,写的很不错,花费了很大的精力从网络了搜罗的,希望大家喜欢.
💻 TXT
字号:
使用线性同余算法产生伪随机数C语言模拟[原创] 
     C语言中有个random(n)函数,可以产生0——n-1之间的伪随机数,rand()函数可以产生0——32767之间的伪随机数,一般需要配合使用srand(long)给出随机种子,或者使用randomize()函数来根据系统时间指定随机种子。

     常用的产生伪随机数的算法是线性同余法,下面是我写的代码,相信通过代码,大家可以很容易地明白伪随机数原理:

     算法:an+1=b*an+c mod m;a0=d。d为种子。

int d;/*种子*/
long My_Rand(long b,long c,long m)
{
   return  d=(b*d+c)%m;/*产生随机数,并记录,用来产生下一个伪随机数*/
}

long gcd1(long m,long n)
{/*求最大公约数,算法中的b和m一般取互素*/
   long r;
   while((r=m%n)!=0)
   {
     m=n;
     n=r;
   }
   return n;
}

long gcd(long m)
{/*计算与m互素的b*/
   long i=2;
   while(gcd1(i,m)!=1)
      i++;
   return i;
}

void main()
{
   long b,c,m;
   int count;
   int i;
   m=32767;
   b=gcd(m);
   c=5001;
   d=3;
   count=800;
   for(i=0;i<count;i++)/*产生800个伪随机数*/
   {
      if(i%10==0)
           printf("\n");
      printf("%8ld",My_Rand(b,c,m));
   }
}

当种子d为131时运行结果如下:


    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085
   30434     365    5761   16553    5370   15771    3806   12643   30317     131
    5293   15617    3498   12027   29085   30434     365    5761   16553    5370
   15771    3806   12643   30317     131    5293   15617    3498   12027   29085

当种子数为151时,运行结果如下:


    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
   31714    2925   10881   26793   25850   23964   20192   12648   30327     151
    5333   15697    3658   12347   29725   31714    2925   10881   26793   25850
   23964   20192   12648   30327     151    5333   15697    3658   12347   29725
 

⌨️ 快捷键说明

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