东方博宜oj1357哪个厂家的零件更标准

东方博宜oj1357哪个厂家的零件更标准

在统计描述中,方差用来计算每一个变量(观察值)与总体均数之间的差异。比如:甲乙 22 个厂商生产某零件,一批零件要求在尺寸合格的情况下,大小越一致越好,由于生产工艺的问题,零件生产厂商生产的零件不可能一模一样。

为了检测甲乙两个厂商,哪个厂商生产的零件更符合标准,分别从 22 个厂商生产的零件中抽取 55 个样品尺寸如下:

甲:100100 101101 102102 100100 9999;

乙:9898 100100 105105 103103 9696;

假设零件尺寸在 95 \sim 11095∼110 之间都算合格,那么两批零件都是合格的;如果按照平均数计算,两组数据的平均值都是 100.4100.4。

但如果将两组数据画到数轴上:

从两个厂抽检的零件分布图可以看出,甲厂的零件大小更加一致,更加符合标准。

为了方便计算数据的离散程度,我们引入方差的概念,方差的计算公式为:

s^2 = [(x_1-\overline{x})^2+(x_2-\overline{x})^2+ \dots + (x_n-\overline{x})^2]
s
2
=[(x
1


x
)
2
+(x
2


x
)
2
+⋯+(x
n


x
)
2
]

其中 x_1 \sim x_nx
1

∼x
n

代表一组数据中的每个元素, \overline{x}
x
代表这组数据的平均值。

按照公式,甲厂零件的方差为:

(100-100.4)^2+(101-100.4)^2+(102-100.4)^2+(100-100.4)^2+(99-100.4)^2 = 5.2
(100−100.4)
2
+(101−100.4)
2
+(102−100.4)
2
+(100−100.4)
2
+(99−100.4)
2
=5.2

乙厂零件的方差为:

(98 -100.4)^2+(100-100.4)^2+(105-100.4)^2+(103-100.4)^2+(96-100.4)^2 = 53.2
(98−100.4)
2
+(100−100.4)
2
+(105−100.4)
2
+(103−100.4)
2
+(96−100.4)
2
=53.2

从方差上也可以看出,甲厂的零件更符合标准!

现从键盘读入 22 个厂生产的零件尺寸(假设零件的尺寸都是合格的),请计算哪个厂的零件尺寸更加一致(方差更小)?

【以下回答由 GPT 生成】

首先,我们需要从键盘读入22个厂商生产的零件尺寸。假设零件尺寸都是合格的,我们可以使用一个数组来存储这些尺寸。

接下来,我们需要计算每个厂商零件尺寸的方差。对于每个厂商,我们可以使用方差的公式来计算,然后比较得出方差最小的厂商。

最后,我们将最小方差的厂商输出作为结果。

下面是使用C++语言实现以上步骤的示例代码:

#include <iostream>
#include <cmath>

constexpr int NUM_OF_MANUFACTURERS = 22;
constexpr int SAMPLE_SIZE = 55;
constexpr float LOWER_LIMIT = 95.0;
constexpr float UPPER_LIMIT = 110.0;

float calculateVariance(const float* data, int size, float mean) {
  float variance = 0.0;

  for (int i = 0; i < size; i++) {
    float diff = data[i] - mean;
    variance += diff * diff;
  }

  return variance;
}

int main() {
  float data[NUM_OF_MANUFACTURERS][SAMPLE_SIZE];

  // 从键盘读入22个厂商生产的零件尺寸
  for (int i = 0; i < NUM_OF_MANUFACTURERS; i++) {
    for (int j = 0; j < SAMPLE_SIZE; j++) {
      std::cin >> data[i][j];
    }
  }

  int bestManufacturer = -1;
  float smallestVariance = INFINITY;

  // 计算每个厂商零件尺寸的方差,并找到方差最小的厂商
  for (int i = 0; i < NUM_OF_MANUFACTURERS; i++) {
    float sum = 0.0;

    // 计算平均值
    for (int j = 0; j < SAMPLE_SIZE; j++) {
      sum += data[i][j];
    }
    float mean = sum / SAMPLE_SIZE;

    // 检查尺寸是否处于合格范围内
    bool withinLimits = true;
    for (int j = 0; j < SAMPLE_SIZE; j++) {
      if (data[i][j] < LOWER_LIMIT || data[i][j] > UPPER_LIMIT) {
        withinLimits = false;
        break;
      }
    }

    if (withinLimits) {
      // 计算方差
      float variance = calculateVariance(data[i], SAMPLE_SIZE, mean);

      // 更新方差最小的厂商
      if (variance < smallestVariance) {
        smallestVariance = variance;
        bestManufacturer = i;
      }
    }
  }

  if (bestManufacturer != -1) {
    std::cout << "厂商" << bestManufacturer+1 << "的零件尺寸更加一致(方差更小)" << std::endl;
  } else {
    std::cout << "无法判断哪个厂商的零件尺寸更加一致" << std::endl;
  }

  return 0;
}

以上代码会首先从键盘读入22个厂商生产的零件尺寸,然后计算每个厂商的方差,并找到方差最小的厂商。最后打印输出结果,指示哪个厂商的零件尺寸更加一致。

注意:此示例假设键盘输入的数据是合格的,并且将尺寸限定在95到110之间。如有其他要求,请根据实际情况进行相应修改。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^