浅谈rand和srand

srand和rand()配合使用产生伪随机数序列。rand函数在产生随机数前,
需要系统提供的生成伪随机数序列的种子

rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,
每次调用rand函数生成的伪随机数序列都是一样的。

srand(unsigned seed)通过参数seed改变系统提供的种子值,
从而可以使得每次调用rand函数生成的伪随机数序列不同,
从而实现真正意义上的“随机”。

通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),
可以为rand函数提供不同的种子值,进而产生不同的随机数序列。



代码测试如下:

void Game()
{
    
    
	for (int i = 0; i < 5; i++)
	{
    
    

		int x = rand() % 10;
		printf("%d ", x);

	}
	
}

int main()
{
    
    
   //若没有系统提供的种子值,则每次调用rand函数生成的伪随机数序列都是一样的
	Game();
	return 0;
}

//如下列打印的1 7 4 0 9,每一次编译运行调用rand函数产生的随机值序列都相同


在这里插入图片描述



void Game()
{
    
    
	for (int i = 0; i < 5; i++)
	{
    
    

		int x = rand() % 10;
		printf("%d ", x);

	}
	
}

int main()
{
    
    
	srand(2);  //取seed的值为2,虽然有种子值,但不发生改变,那么每次调用rand函数生成的伪随机数序列还是一样的。
	
	Game();
	return 0;
}

//如下列打印的5 6 8 5 4,每一次编译运行调用rand函数产生的随机值序列都相同

在这里插入图片描述



void Game()
{
    
    
	for (int i = 0; i < 5; i++)
	{
    
    

		int x = rand() % 10;
		printf("%d ", x);

	}
	printf("\n");
	
}

int main()
{
    
    

	srand(time(NULL));//利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列。

	Game();
	return 0;
}

//如下列打印,每一次编译运行调用rand函数产生的随机值序列都不同

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cfk17829572643/article/details/111875223
今日推荐