生成指定位数的随机数

输入:要生成的随机数的位数

输出:随机数

因为是32位系统,因此只能生成9位长度的10进制数。如果是10位的话可能会出现负数。溢出。

[c-sharp]  view plain copy print ?
  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5. long MyRand(int n)  
  6. {  
  7.     static int inited=0;  
  8.     long X,k=1;  
  9.     int i;  
  10.     if(!inited)  
  11.     {  
  12.         srand((unsigned)time(0));  
  13.         inited=1;  
  14.     }  
  15.     if(n==1)  
  16.         return rand()%10;  
  17.     else if(n==2)  
  18.         return (rand()%9+1)*10+rand()%10;  
  19.     for(i=0;i
  20.         k*=10;  
  21.     for(i=n/2+1;i
  22.         k*=10;  
  23.     X=(rand()%9+1)*k+((long)(rand()%k)*(rand()%k))%k;  
  24.     if(X%2==0)//如果产生的随机数是偶数,那么+1使之成为奇数。偶数肯定不是素数。  
  25.         X=X+1;  
  26.     return X;  
  27. }  
  28. //最高时9位。超过10位时会出现负数。  
  29. void main()  
  30. {  
  31.     int n,i;  
  32.     srand((unsigned)time(0));  
  33.     scanf("%d",&n);  
  34.     //for(i=0;i<20;i++)  
  35.         printf("%ld/n",MyRand(n));  
  36. }  

 





本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2011/03/21/2297039.html,如需转载请自行联系原作者

你可能感兴趣的:(生成指定位数的随机数)