c语言生成随机数笔记

利用C语言在vs2013生成随机数的一般方式记录

#include 
#include  
#include   //利用时间来制造伪随机数

int main()
{
	int random1 = 0;     //设置存放空间
	float random2 = 0.0;
	
	srand((unsigned)time(NULL));    //设置一个时间种子,种子必须是整形,用时间来近似表示出随机数

	random1=rand()%10+3;      //产生一个随机数放在random里面,范围是(0+3)~(10-1+3),本来rand()产生的随机数是0~RAND_MAX

	random2=1.0*rand()%10+3;     //产生浮点型的方式

//由于电脑处理速度太快,能在一秒内同时处理很多行代码,所以同时产生多个随机数可能造成随机数都一样的情况

//解决方案:
	//srand((unsigned)time(NULL) + (unsigned)rand());


  	return 0;
}	

小总结

以下一段话摘自***烟雨迷离半世殇***:
系统在调用rand()之后就自动调用srand(),如果用户在rand()之前调用srand()给参数seed指定一个值,那么rand()就会将seed的值作为产生伪随机数的初始值,如果用户在rand()前没有调用srand(),系统会默认将1作为伪随机数的初始值,如果给了一个定值,每次rand()产生的随机数序列就一样了,所以为了避免发生上述情况,通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来产生种子,如果觉得时间间隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘以某个合适值,如srand((unsigned)time(NULL)*10)。

如果不想用

 srand((unsigned)time(NULL) + (unsigned)rand())

也可以

srand((unsigned)time(NULL));
for (i=0;i<5;i++)
{
	random=rand()%10+3;   //在循环体外面调用srand(),每调用一次rand()就会调用一次srand()来更新种子
}

希望可以帮到你,加油!

                                                        2020.5.6

你可能感兴趣的:(c语言生成随机数笔记)