输入:要生成的随机数的位数
输出:随机数
因为是32位系统,因此只能生成9位长度的10进制数。如果是10位的话可能会出现负数。溢出。
- #include<math.h>
- #include<time.h>
- #include<stdio.h>
- #include<stdlib.h>
- long MyRand(int n)
- {
- static int inited=0;
- long X,k=1;
- int i;
- if(!inited)
- {
- srand((unsigned)time(0));
- inited=1;
- }
- if(n==1)
- return rand()%10;
- else if(n==2)
- return (rand()%9+1)*10+rand()%10;
- for(i=0;i<n/2+1;i++)
- k*=10;
- for(i=n/2+1;i<n-1;i++)
- k*=10;
- X=(rand()%9+1)*k+((long)(rand()%k)*(rand()%k))%k;
- if(X%2==0)//如果产生的随机数是偶数,那么+1使之成为奇数。偶数肯定不是素数。
- X=X+1;
- return X;
- }
- //最高时9位。超过10位时会出现负数。
- void main()
- {
- int n,i;
- srand((unsigned)time(0));
- scanf("%d",&n);
- //for(i=0;i<20;i++)
- printf("%ld/n",MyRand(n));
- }
本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2011/03/21/2297039.html,如需转载请自行联系原作者