10.7 随机数的向量

优质
小牛编辑
128浏览
2023-12-01

第一步是生成大量的随机数并存储它们在一个向量中。“大量”我指的是20个。在开始应该使用一个可控范围的数值,这将有益于调试,之后在增加它的规模。

接下来的函数将会使用一个参数,用来表示向量的长度。它用于申请分配一个新的向量用作存储int型数据,并且用0至upperBound-1之间的随机数填充。

apvector randomVector (int n, int upperBound) { apvector vec (n); for (int i = 0; i,这意味着该函数返回一个整型数的向量。为了测试这个函数,这里有一个十分方便的函数用作输出向量中的内容。

void printVector (const apvector<int>& vec) {
     for (int i = 0; i<vec.length(); i++) {
        cout << vec[i] << " ";
    }
}

注意,这是一个apvector的合法语句参考。实际上它是十分常见的,因为它不必复制向量。因为printVector不需要修改向量,我们声明为const参数。

接下来的代码是生成一个向量并输出:

int numValues = 20;
int upperBound = 10;
apvector<int> vector = randomVector (numValues, upperBound);
printVector (vector);

在我的机器上输出是:

3 6 7 5 3 5 6 2 9 1 2 7 0 9 3 6 0 6 2 6

这看起来是十足的随机。你的输出结果可能不同。

如果这些数字真的是随机的,我们其他每一个数字出现都是同样的次数——每个两次。实际上,数字6出现了5次,4和8则未曾出现。

这是否意味着平均值不是很均匀?这很难说。只用几个数值,得到我们所期望结果的是十分渺茫的。随着数字的增多,输出将会更接近我们预期的。

为了测试这个理论,我们写一些程序用作统计每个数字出现的次数,当增加到numValues.之后再观察发生了什么。