Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查该方法是否返回一系列数字的测试_C++_Random_Googletest - Fatal编程技术网

C++ 检查该方法是否返回一系列数字的测试

C++ 检查该方法是否返回一系列数字的测试,c++,random,googletest,C++,Random,Googletest,我编写了一个方法,返回两个给定数字之间的随机数。这里是标题: 整数范围(整数低、整数高) 我想检查这个方法是否真的返回了这两个数字之间的所有范围, 所以我写了一个测试(如下),但在我看来它太复杂了。也许还有别的方法可以检查,或者我是最好的:) TEST\u F(随机生成器测试,填充所有范围) { //在集合中-没有重复项 设置结果; int i; 对于(i=0;i您可以测试均匀分布,而不是完整覆盖率。为此,请计算直方图并检查每个箱子的数量是否超过预期 编辑: 如果您想进行更严格的测试,请参见以下

我编写了一个方法,返回两个给定数字之间的随机数。这里是标题:

整数范围(整数低、整数高)

我想检查这个方法是否真的返回了这两个数字之间的所有范围, 所以我写了一个测试(如下),但在我看来它太复杂了。也许还有别的方法可以检查,或者我是最好的:)

TEST\u F(随机生成器测试,填充所有范围)
{
//在集合中-没有重复项
设置结果;
int i;

对于(i=0;i您可以测试均匀分布,而不是完整覆盖率。为此,请计算直方图并检查每个箱子的数量是否超过预期

编辑:


如果您想进行更严格的测试,请参见以下答案:

如果生成器返回0,1,2,3,4,5,6,7,8,9,9,9,9,9…?这会填满范围,但不是真正随机的。有些测试会检查数字序列的随机性,例如。问题是,检查均匀分布的方法是什么?我告诉过您如何验证分布n是统一的-创建一个直方图,并检查所有箱子是否都获得了近似预期值。很抱歉,但我的问题与谷歌测试或其他单元测试有关。如何编写检查直方图的测试。我了解原理,但我无法在测试方法中进行近似检查。
TEST_F(RandomGeneratorTest, fill_all_the_range)
{
// In set - there is no duplicates
std::set<int> results;
int i;
for (i=0;i<1000;i++)
    results.insert(NumRange(0,9));
EXPECT_EQ(10, results.size());
}
TEST_F(RandomGeneratorTest, only_in_the_range)

{
int i,result;
for (i=0;i<1000;i++)
{
    result = NumRange(0,9);
    EXPECT_TRUE((result<=9) && (result>=0));
}
}
TEST_F(RandomGeneratorTest, fill_all_of_the_histogram_range)
{
int results[10]= {0};
int i, approxRes;
for (i=0;i<100000000;i++)
    results[NumRange(0,9)]+=1;
for (i=0;i<10;i++)
{
    approxRes = results[i]/10000;
    EXPECT_TRUE((approxRes<=1001) && (approxRes>=999));
}
}