#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int a[101],b[101]={0},i,j,k=0,t=0
srand(time(0))
for (i=0i<100i++)
{
a[i] = rand()%90 + 10//产生10~99的整数
if (a[i] % 2 == 0)
{
k++
b[t++] = a[i]
}
}
printf("未排序时数组b的元素:\n")
for (t=0,i=0i<ki++)
{
printf("%d ",b[i])
t++
if (t % 10 == 0)
printf("\n")
}
printf("\n\n")
//排序
for (i=0i<k-1i++)
{
for (j=k-2j>=ij--)
{
if (b[j] >b[j+1])
{
t = b[j]
b[j] = b[j+1]
b[j+1] = t
}
}
}
printf("排序后数组b的元素:\n")
for (t=0,i=0i<ki++)
{
printf("%d ",b[i])
t++
if (t % 10 == 0)
printf("\n")
}
printf("\n")
}
srand((int)time(NULL))用于设定随机数种子。 rand()%100,产生0-99的随机数。如果要产生16-59之间的数,可以这样写:rand()%44+16(这里44由59-16+1得到)。其他情况与此雷同。
rand()是不能产生真正的随机数的。即使不能产生真正的随机数,也要大概接近。而rand()好象每次的随机都一样。之所以rand()每次的随机数都一样是因为rand()函数使用不正确。
各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。
扩展资料
调用随机数函数 rand()() 的时候, 实际得到的这个随机数并不是绝对随机的,它是以一个初始值,通过一个算法,计算出来的“伪随机数"数列,每次调用rand()()时,从这个数列依次取出一个值,做为随机数。
这个初始的值就是"随机数种子", 也就是说,如果随机数种子相同,计算出的随机数数列是相同的。而srand()om( x) 这个函数就是初始化随机数产生器,设定随机数种子用的。给定的x的就是随机数种子。可以验证,当你多次调用srandm(x)时,如果x取值相同,则得到的随机数数列是一样的。
所以,若我们每次运行程序时,要得到不同的随机数序列,就应该用不同的种子来初始化这个随机数产生器。比如说,用时间初始化它,或者用getpid(),用进程的pid号初始化,由于每次运行程序时,它的pid号一般是不同的,所以能够产生不同的随机数序列。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)