C语言数组运用,c++语言数组
本文通过一个例子介绍了使用数组的一些基本模式。问题是这样的:第一个老师把0-9的随机数保存在一个数组里,然后统计每个数字出现的次数并打印出来,检查这些数字的随机性。随机数在某些情况下非常有用(比如游戏程序),但是用计算机生成完全随机数就没那么容易了。计算机执行的每一条指令的结果都是确定的,没有一条指令产生随机数。调用C标准库得到的随机数其实就是伪随机数,是用数学公式计算出来的某个数。然而,这些数字看起来是随机的,并且在统计上接近均匀分布随机数。
rand函数用于在C标准库中生成伪随机数。要使用这个函数,需要包含头文件stdlib.h。它没有参数,返回值是一个介于0和RAND_MAX之间的整数,接近均匀分布。RAND_MAX是头文件中定义的常数。它在不同的平台上有不同的值,但肯定是一个非常大的整数。我们通常使用的随机数是限定在一定范围内的,比如0~9,而不是0~RAND_MAX。我们可以使用%运算符来处理rand函数的返回值:
int x=rand()% 10;
以随机数为例,为了方便分析和调试,我们取较小的数组长度,只生成20个随机数:
# include stdio . h # include stdlib . h # define N20 int a[N];void gen _ random(int upper _ bound){ inti;for(I=0;I I)a[I]=rand()% upper _ bound;} void print _ random(){ inti;for(I=0;i i ) printf(%d ,a[I]);printf( \ n );} int main(void){ gen _ random(10);print _ random();系统(“暂停”);return0}
运行结果:
上面的输出看起来非常随机。但是随机性呢?分布均匀吗?按均匀分布,每个数的概率应该是一样的。在上述20个结果中,6出现了5次,而4和8一次都没有出现。但这不代表什么。毕竟我们的样本太少了,只有20个。如果样本足够大,比如100,000个,统计它们每个出现的次数可能就有意义了。但你不可能把10万个数字都打印出来,然后一个一个数吧?我们需要写一个函数来计算每个数字出现的次数。完整的过程如下:
# include stdio . h # include stdlib . h # define N 100000 int a[N];void gen _ random(int upper _ bound){ inti;for(I=0;I I)a[I]=rand()% upper _ bound;} int how many(int value){ int count=0,I;for(I=0;i i ) if(a[i]==value)计数;returncount} int main(void){ inti;gen _ random(10);printf( value \ thow number \ n );for(I=0;i i ) { printf(%d\t%d\n ,I,how many(I));}系统(暂停);return0}
运行结果:
可以看到,0到9的数字出现了一万次左右,说明是比较统一的。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。