c++ - 人口数据的生成方式

标签 c++ algorithm random

我必须生成 100 行城市人口,然后还为每个城市生成相同数量的失业行。数据应该接近真实的东西。我的问题是如何正确地做到这一点?我有一个想法,我想与您分享以征求您的意见。例如:

我将从中央统计局获取特定城市的 200 行真实人口数据,然后从这 200 行中随机选择 100 行。之后,我还会随机生成有关失业的数据,但基于较早的人口数据,考虑到失业人数可能不会超过人口人数。

此时我随机生成了 1000 到 30 000(人口)范围内的数据,如下所示:

int random_population_result = (rand() % 29000) + 1000;

失业人数在 100 到 2000 之间

int random_unemployed_result = (rand() % 1900) + 100;

但是我的教授对我说,以这种方式生成这种数据并不是一个好主意,所以他让我考虑一下。我在上面向您介绍了我的新想法,我很好奇您的意见。

整个循环:

//number of rows in column
const int colSize = 100;
int col_X[colSize]; //stores X values [population]
int col_Y[colSize]; //stores Y values [unemployed people]
//display table header
cout << "id " << "\t" << "X" << "\t" << "Y" << endl;
for (int i = 0; i < colSize; i++){
    //return value between 1000 and 30 000 of population  
    int random_population_result = (rand() % 30000) + 1000;
    //return value between 100 and 2000 of unemployed people
    int random_unemployed_result = (rand() % 1900) + 100;
    //put values to arrays
    col_X[i] = random_population_result;
    col_Y[i] = random_unemployed_result;
}

问候。

最佳答案

看看极端情况。最小的人口是 1000,最大的失业结果是 2000。显然,这是一个问题,因为在 1000 的人口中不可能有 2000 的失业人员。

在另一个极端,一个拥有 30000 人口的城市可能有 100 人失业,失业率为 0.3%。这比你在现实生活中会发现的要低得多。

所以失业结果应该与城市人口成正比。在现实生活中,失业率通常以占人口的百分比表示,不同城市略有不同。例如,平均失业率可能为 10%,A 市的失业率可能为 9%,B 市的失业率可能为 12%。

所以选择你的城市人口,然后选择一个失业率,然后将两个结果相乘得到失业人数。

关于c++ - 人口数据的生成方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40642279/

相关文章:

c++ - float 类型 创建对象 C++ 后丢失的缓冲区内容

algorithm - 旅行推销员变体,规划旅行行程

algorithm - 您将如何编写非递归算法来计算阶乘?

java - 几个 jbutton 的随机颜色

Python随机模块: How can I generate a random number which includes certain digits?

c++ - 如何混合语音音频

c++ - 将转换构造函数与运算符重载相结合

c++ - 如何使 float 显示 -0 也显示为 0?

arrays - 给定 N 个排序数组,检查是否有两个数组包含至少两个公共(public)元素

algorithm - 在不同概率范围内生成随机数