为阵列程序生成测试用例可能是一个繁琐的过程。但是STL(标准模板库)中的generate和generate_n函数可以方便地用随机值填充数组。
null
- 生成()
generate函数通过调用生成器函数“gen”将随机值分配给[begin,end]范围内的元素。请注意,begin包括在范围内,但end不包括在内。
以下代码演示了generate的实现:
// C++ program to demonstrate generate function in STL
#include <bits/stdc++.h>
using
namespace
std;
// function to generate random numbers in range [0-999] :
int
randomize()
{
return
(
rand
() % 1000);
}
int
main ()
{
// for different values each time we run the code
srand
(
time
(NULL));
vector<
int
> vect(10);
// declaring the vector
// Fill all elements using randomize()
generate(vect.begin(), vect.end(), randomize);
// displaying the content of vector
for
(
int
i=0; i<vect.size(); i++)
cout << vect[i] <<
" "
;
return
0;
}
输出:
832 60 417 710 487 260 920 803 576 58
注意:由于srand,每次运行代码时,输出都会不同。如果我们删除srand,每次运行代码时都会得到相同的随机数集。
- 生成 generate_n的作用与从begin迭代器指向的元素开始生成多达n个元素相同。 以下代码演示了generate_n的工作原理:
// C++ program to demonstrate generate_n() function in STL
#include <bits/stdc++.h>
using
namespace
std;
// function to generate random numbers in range [0-999] :
int
randomize()
{
return
(
rand
() % 1000);
}
int
main ()
{
// for different values each time we run the code
srand
(
time
(NULL));
vector<
int
> vect(10);
// declaring the vector
// Fill 6 elements from beginning using randomize()
generate_n(vect.begin(), 6, randomize);
// displaying the content of vector
for
(
int
i=0; i<vect.size(); i++)
cout << vect[i] <<
" "
;
return
0;
}
输出:
177 567 15 922 527 4 0 0 0 0
注意:在这里,由于srand的原因,每次运行代码时,输出都会不同。如果我们删除srand,每次运行代码时都会得到相同的随机数集。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END