输入:要生成的随机数的位数
输出:随机数
因为是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)); }