C语言如何获取用户输入的随机个数的一串数字

C语言如何获取用户输入的随机个数的一串数字,第1张

临时定义较大的数组,输入时记录个数,然后动态申请数组则能解决这一问题。以输入整数为例的代码如下:

//#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中的一个整数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9489198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存