在数据生成器前面加上:
#include "random.h"
#include "gen_xxx.h"
rand_int()
:生成随机 int
范围内整数。
random(l,r)
:生成 [l,r] 内整数。
char_set
(字符集):
init()
:初始化。
add_ch(c)
:增加字符 c。
add_chs(l,r)
:增加从 l 到 r 的字符。
add_upper_case()
:初始化为大写字母。
add_lower_case()
:初始化为小写字母。
add_numbers()
:初始化为数字。
gen_char()
:从字符集里面随机抽取一个字符。
gen_rand_string(len,c)
:用字符集 c 生成长度为 len 的随机字符串。
gen_palindrome(len,c)
:用字符集 c 生成长度为 len 的随机回文字符串。
add_noise(s,c,cnt)
:用字符集 c 为 s 添加 cnt 个噪音,也就是随机 cnt 个位置,放上随机字符。
repeat(pattern,cnt)
:将 pattern 这个字符串重复 cnt 次,生成新的字符串。
cout<<add_noise(repeat("poiop",2000),rnd,10); //生成一个由 poiop 重复 2000 次形成的字符串,添加 10 点噪音
char_set c;
c.init();
c.add_ch('a');
c.add_ch('b');
cout<<gen_rand_string(n,c); //生成一个随机的由 a,b 构成的长度为 n 的字符串
cout<<gen_palindrome(n,c); //生成一个随机的由 a,b 构成的长度为 n 的回文串
c.init();
c.add_lower_case();
cout<<gen_rand_string(n,c); //生成一个随机的由小写字母构成的长度为 n 的字符串
sequence
(序列):
init()
:初始化。
add()
:添加元素。
print(c,ed)
:输出,中间两个数用 c 隔开,最后输出 ed。c 默认为空格,ed 默认为换行。
gen_random_sequence(len,l,r)
:生成一个长度为 len,每个元素从 [l,r] 中选取的数列。
repeat(pattern,cnt)
:将数列 pattern 重复 cnt 次。
add_noise(seq,cnt,l,r)
:在数列 seq 中添加 cnt 个噪音,每个元素从 [l,r] 中选取。
gen_query(m,l,r)
:生成 m 个左右边界在 [l,r] 之间的查询。
sequence s=gen_random_sequence(100000,0,1e9); //生成元素处在 [0,1e9] 之间的随机数列
s.print();
gen_query(100000,1,100000); //再随机生成几组查询
graph
(图):
init
:初始化。
print()
:输出,不带边权。
printw(l,r)
:输出带权边,权值在 [l,r] 之间。
shuffle
:打乱边。
add_edge(p)
:添加边 p。
check(p)
:检查边 p 是否存在。
random_tree(n)
:生成一棵 n 个节点的树。
random_graph(n,m)
:生成一张 n 个节点,m 条边的图。
random_edge(n)
:生成一条端点在 [1,n] 之间的边。
chain(n)
:生成一条有 n 个节点的链。
jhgraph(n,nd)
:生成一个 n 节点菊花图,中心节点为 nd。
graph g;
g=chain(n);
g.add_edge(make_pair(1,n));
g.print(); //生成一个环
g=random_graph(n,m);
g.shuffle();
g.printw(0,1e9); //生成一张边权在 [0,1e9] 之间的图,并打乱输出