【发布时间】:2014-04-29 08:32:49
【问题描述】:
所以我的任务是随机生成成批物品的重量和利润(针对 0/1 背包问题)。我在 batch[] 中表示数组中的批次。我的问题是:
rand() 在第二个 for 循环中没有生成唯一的随机值。是因为嵌套的for循环吗?
第二个 for 循环为 p[j] 和 w[j] 赋值,但由于它遵循 j,在每次迭代中赋值从 j 开始,我如何每次从 0 开始?
输出:
| 231 |25
| 231 |25
| 231 |25
| 231 |25
| 0 | 0
|19 | 4
|19 | 4
|19 | 4
|19 | 4
|19 | 4
main(){
srand(time(NULL));
int i, j, t;
int batch[] = { 4, 5 };
int sizeOfBatch = sizeof(batch) / sizeof(batch[0]);
for (i = 0; i < sizeOfBatch ; i++){
int *p = (int*)calloc(batch[i], sizeof(int));
int *w = (int*)calloc(batch[i], sizeof(int));
for (j = 0; j < batch[i]; j++){
p[j] = rand() % 500;
printf("\n| %d ", p[i]);
w[j] = rand() % 100;
printf("| %d ", w[i]);
}
【问题讨论】:
标签: c loops for-loop nested srand