浅析如何造数据

有关造数据,
显然是为了对拍或者出题而生。

数据类型

      • 0 随机数
      • 1 整数
        • 1.1 i n t int int 范围内任意整数
        • 1.2 范围 [ a , b ] [a,b] [a,b]
      • 2 小数
        • 2.1 任意小数
        • 2.2 范围 [ a , b ] [a,b] [a,b] 自行解决
      • 3 序列

0 随机数

本文选择使用 c + +    S T L c++\ \ STL c++  STL 自带伪随机函数 m t 19937 mt19937 mt19937 生成随机函数。

m t 19937 mt19937 mt19937 的生成范围为 i n t int int 范围(包含负值)。

mt19937 rnd(time(0));: 定义一个伪随机函数叫 r n d ( ) rnd() rnd()

1 整数

1.1 i n t int int 范围内任意整数

mt19937 rnd(time(0));

1.2 范围 [ a , b ] [a,b] [a,b]

mt19937 rnd(time(0));

int frnd(int a, int b) {
	int t = rnd() * rnd();
	if (a == b)
		return printf("%lld\n", a);
	while (t <= 0)
		t += b;
	(t %= b - a) += a + 1;
	return t;
}

2 小数

2.1 任意小数

精度要求可自行处理。

mt19937 rnd(time(0));

double drnd() {
	double t = 1. * rnd() / 100000000;
	return t * rnd();
}

2.2 范围 [ a , b ] [a,b] [a,b] 自行解决

3 序列

r n d ( ) rnd() rnd() 函数为随机函数。

你可能感兴趣的:(c++,算法,数据结构)