临时定义较大的数组,输入时记录个数,然后动态申请数组则能解决这一问题。以输入整数为例的代码如下:
//#include "stdafxh"//If the vc++60, with this line#include "stdioh"
#include "stringh"
#include "stdlibh"
int myinput(int x){
int n=sizeof(int),p;
#if n==4 //若是32位int平台
int a[0xffffff];
#else //若是16位int平台
int a[0x07fff];
#endif
x=0;
while(scanf("%d",a+x)>0)//输入数据
(x)++;
if((p=(int )malloc(xn))==NULL){//动态创建数组
printf("Failed to create the array\n");
return NULL;
}
memcpy(p,a,xn);//将输入数据拷贝到动态创建的数组中
return p;
}
int main(void){
int p=NULL,n,i;
printf("Please enter some Numbers, not figures were over\n");
p=myinput(&n);
for(i=0;i<n;printf("%d ",p[i++]));//Look at
free(p);
printf("\n");
return 0;
}
编译环境为:vs2013
产生1到3的整型随机数的代码如下:
#include<stdioh>
#include<timeh>
#include<stdlibh>
#define max 3 //这个函数的意义为:随机生成最大的数为3
#define min 1 //这个函数的意义为:随机生成最小的数为1
int main()
{
int num;
srand(time(0));
num = rand() % (max - min) + min; // 这里的意义,“%”为模运算
printf("随机数为:%d\n", num);
system("pause"); //这个代码可以让d出的黑框不会一下就消失
return 0;
}
扩展资料:
根据密码学原理,随机数的随机性检验可以分为三个标准:
条件一、统计学伪随机性。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。
条件二、密码学安全伪随机性。其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。
条件三、真随机性。其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数。
随机数分为三类:
①伪随机数:满足第一个条件的随机数。
②密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器
计算得出。
③真随机数:同时满足三个条件的随机数。
#include<stdlibh> #include<timeh> #include<stdioh> int main() { srand((unsigned)time(0)); int t=rand()%4; printf("%d",t); return 0; }
c语言中取得伪随机数主要使用srand()和rand()这两个函数
rand()函数会返回一个伪随机数,但是这是通过一种数学公式推算出来的,得到的随机数分布太集中,这时候要使用srand()函数来设定产生随机数的种子,一般采用当前时间作为种子,这样可以得到分布比较均匀的伪随机数。
rand(),srand()函数位于stdlibh文件中,取得时间的time()函数位于timeh文件中。随机数测试如下:
#i
nclude
<stdioh>
#i
nclude
<stdlibh>
#i
nclude<timeh>
void
main()
{
int
results[10];/用于保存随机数产生的结果/
int
i=0;
srand((int)time(0));/设定种子/
for(i=0;i<10;i++)
{
results[i]=0;
}
for(i=0;i<10000;i++)
{
(results[rand()%10])++;/取一万次随机数,使用求余运算符使得最后取得的随机数小于10/
}
for(i=0;i<1
0;i++)
{
printf("
%d
%d
\n",i,results[i]);/输出0-9之间的随机数出现的次数/
}
}
经多次运行试验,产生的随机数比较均匀
源程序如下:
#include "pchh"
#include <iostream>
#include <timeh>
using namespace std;
int main()
{
const int n = 10000;
int number[n] = { NULL };
srand((unsigned)time(NULL));
number[0] = rand() % n; //第一个随机数无需比较
cout << number[0] << " ";
for (int i = 1; i < n; i++) //其余随机数循环产生
{
int j = 0;
number[i] = rand() % n;
while (1)
{
if (number[i] == number[j]) //若有相同则继续循环重新安排随机数
{
number[i] = rand() % n;
j = 0; //若遇到相同的就从头遍历
continue;
}
if (j == (i - 1)) //若遍历完就跳出
break;
j++;
}
cout << number[i] << " ";
}
cout << endl;
return 0;
}
程序运行结果:
扩展资料:
其他实现方式:
#include<timeh> //使用 time 函数必须引入 timeh 头文件
#include<stdlibh>
int main()
{
srand((int)time(0));
int rand_num = rand();
printf("rand_num = %d\n", rand_num);
return 0;
}
以上就是关于C语言如何获取用户输入的随机个数的一串数字全部的内容,包括:C语言如何获取用户输入的随机个数的一串数字、C语言怎样产生一定范围的随机数、c语言如何随机得到0-4中的一个整数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)