1、 随机数产生器在标准库中,提供了 rand 函数(函数原型见) ,用来产生 0 到 RAND_MAX之间的整数(这是 头文件中定义的符号常量) 。RAND_MAX 的值至少应为32767,也就是两个字节(16 位)所能表示的最大整数值。使用: int i=rand();rand 函数产生的数值范围可能与特定应用中的数值范围不同。例如,模拟掷硬币的程序只要 0(正面)和 1(反面) ,模拟投骰子的程序只要 1 到 6 之间的随机整数。可以使用求模运算符(%)和 rand 函数解决:rand()%2; /产生 0 和 1 整数rand()%6; /产生 0 到 5 之间的整数称为比例缩放。数字 2
2、 和数字 6 称为比例因子,然后将所产生的数值范围加 1,即可得到所要结果。总结:1) 由 rand 函数直接产生的值总是取值为:0rand( )RAND_MAX2) 用一个语句模拟投骰子如下:face=1+rand( ) %6;总是对变量 face 指定 1face6 的整数(随机) 。3) 将 2)一般化:n=a+rand( ) % b;其中:a 是位移值(等于所要的连续数范围的开始值) ,b 是比例因子(即由连续整数构成的该范围的宽度。例:#include #include void main()for(int i=1;i) 。void srand(unsigned int seed);
3、为 rand 函数提供随机种子(参数 seed 便是种子) ,就可以在每次执行程序时产生不同的随机数系列。例:#include #include using namespace std;int main()unsigned seed;coutseed;srand(seed);for(int i=1;i(c+标准 ctime)中。例:#include #include using namespace std;int main()srand(time(0);for(int i=1;i#include #include #includeusing namespace std;void select_
4、sort(int array,int n);int main()int i;char *t1,*t2;int a100000;time_t tt1,tt2;srand(time(0); /使计算机通过时钟值自动取得种子值, time(0)或 time(NULL)均可/tt1=time(0);t1=ctime( /ctime 完成将以秒计的时间转换为日期时间字符串for(i=0;i100000;i+)ai=rand()%100+100;coutait;tt1=time(NULL); /排序开始前计时select_sort(a,100000);tt2=time(NULL); /排序结束计时/t2=ctime(double d=difftime(tt2,tt1); /时差couttt2ttt1tdendl;return 0;void select_sort(int array,int n) int i,j,k,t;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+) if(arrayjarrayk) k=j;t=arrayk;arrayk=arrayi;arrayi=t;