编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int total = 150000;
    int num_parts = 300;
    int parts[num_parts];
    int i, current_total, diff;

    // 初始化随机数种子
    srand(time(0));

    // 随机分配数字
    for (i = 0; i < num_parts; i++) {
        parts[i] = rand() % 300 + 200; // 生成范围在[200, 499]之间的随机数
    }

    // 调整总和为150000
    current_total = 0;
    for (i = 0; i < num_parts; i++) {
        current_total += parts[i];
    }
    diff = total - current_total;

    while (diff != 0) {
        int idx = rand() % num_parts;
        if (diff < 0 && parts[idx] > 200) {
            parts[idx]--;
            diff++;
        } else if (diff > 0 && parts[idx] < 499) {
            parts[idx]++;
            diff--;
        }
    }

    // 输出结果
    printf("每份的值为:\n");
    for (i = 0; i < num_parts; i++) {
        printf("%d ", parts[i]);
    }
    printf("\n总和: %d\n", total);

    return 0;
}