C/C++ 随机数生成器的 随机化

为何要随机化?
因为rand函数实际上生成的并不是正在的随机数,而是伪随机数。(具体表现在 重复调用rand会生成看似随机的数字序列,但然而程序每次执行的时产生的序列都是重复的。)

怎么样实现真的随机化?
可以通过使用c++标准库函数srand来实现。

怎么样来使用srand函数? —使用srand的种子(seed),实际可以把seed理解成一个触发器,程序里可以把种子seed/触发器 写成无符号整数。
有两个办法:
1.手动输入seed(无符号数)。
2.使用time函数。

#include "pch.h"
#include <cstdlib>
#include <iostream>
#include <ctime>
#include<iomanip>
using namespace std;

int main()
{

	unsigned seed;
	cin >> seed;
	srand(seed);// 核心在这此
	for (int count=1;count <=10;count++) {
		cout << setw( 10 ) << (1 + rand() % 6);
		if (count % 5 == 0)
		{
			cout << endl;
		}
	}
    std::cout << "Hello World!\n"; 
	return 0;
}

方法二:使用time函数。

#include "pch.h"
#include <cstdlib>
#include <iostream>
#include <ctime>
#include<iomanip>
using namespace std;

int main()
{

	unsigned seed;
	cin >> seed;
	srand(seed);// 核心在这此
	for (int count=1;count <=10;count++) {
		cout << setw( 10 ) << (1 + rand() % 6);
		if (count % 5 == 0)
		{
			cout << endl;
		}
	}
    std::cout << "Hello World!\n"; 
	return 0;
}

time函数介绍,使用此函数必须加入头文件。
此函数返回的是从格林尼治时间1970年1月1日0点到此刻的秒数,这个值被转换成无符号类型的整数,并用作随机数生成器的种子。

更多推荐

C/C++ 随机数生成器的 随机化