#include<stdio.h>#include<stdlib.h>#include<time.h>//time对应的头函数#include<windows.h>//Sleep()对应的头文件voidtest(){int ret =rand();srand((unsignedint)time(NULL));printf("%d\n", ret);}intmain(){int i =0;do{test();
i++;Sleep(1000);//延迟一秒,用于展示这么写的漏洞}while(i<10);}
运行展示 产生的相近数字由于每次运行都用srand重新设置了一下。并且每次时间间隔相差1秒
因此
srand((unsignedint)time(NULL));//不宜多次使用
最后修改 生成10个随机数代码
#include<stdio.h>#include<stdlib.h>#include<time.h>voidtest(){int ret =rand();printf("%d\n", ret);}intmain(){srand((unsignedint)time(NULL));//放入main()函数此处只会运行一次int i =0;do{test();
i++;}while(i<10);}
生成1到100随机数
由于rand()取值是0到32767
所以rand()取余就是0到99
rand()%100+1 范围就是1 到 100
//最后生成的10个 1到100随机数代码#include<stdio.h>#include<stdlib.h>#include<time.h>voidtest(){int ret =rand()%100+1;printf("%d\n", ret);}intmain(){srand((unsignedint)time(NULL));int i =0;do{test();
i++;}while(i<10);}