东方博宜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之间。如有其他要求,请根据实际情况进行相应修改。
【相关推荐】