生成指定位数的随机数

简介:

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

输出:随机数

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

[c-sharp]  view plain copy print ?
  1. #include<math.h>  
  2. #include<time.h>  
  3. #include<stdio.h>  
  4. #include<stdlib.h>  
  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<n/2+1;i++)  
  20.         k*=10;  
  21.     for(i=n/2+1;i<n-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,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
算法 编译器 C语言
生成随机数
C语言中的`rand()`函数生成0-RAND_MAX间的伪随机数,需包含`stdlib.h`。序列重复因默认种子为1,可使用`srand(unsigned int seed)`初始化,通常结合`time(NULL)`设置种子以产生不同序列。`time()`函数从1970年至今的秒数(时间戳),包含于`time.h`,用于提供变化的种子。通过`rand() % b + a`可调整生成指定范围[a, b]内的随机数。
86 3
|
C++
如何在C++中生成随机数
在C++中,生成随机数是一个常见的技术需求。本文将介绍如何在C++中使用标准库来生成随机数。
190 0
|
机器学习/深度学习
1313:【例3.5】位数问题
1313:【例3.5】位数问题
162 0
4位数的随机数据
学习4位数的随机数据。
119 0
|
C#
C# 随机数一例
public int[] getRandomNum(int num,int minValue,int maxValue) { Random ra=new Random(unchecked((int)DateTime.
988 0
|
算法
位数问题
【问题描述】  在所有的N位数中,有多少个数当中有偶数个数字3? 由于结果可能很大,你只需要输出这个答案对12345取余的值。【输入格式】     读入一个数N【输出格式】     输出有多少个数中有偶数个数字3。
1337 0