gpt4 book ai didi

c - 嵌套循环中的 srand() 相同结果

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:09 25 4
gpt4 key购买 nike

所以我的任务是为成批的元素随机生成权重和利润(针对 0/1 背包问题)。我在 batch[] 中用数组表示批处理。我的问题是:

  1. rand() 没有在第二个 for 循环中生成唯一的随机值。是因为嵌套的 for 循环吗?

  2. 第二个 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]);
}

最佳答案

您正在分配给 p[j](和 w[j])并打印 p[i](和 w[i]);您的问题与 srand()rand() 无关。

        p[j] = rand() % 500;      // assign to p[j]
printf("\n| %d ", p[i]); // print p[i]
w[j] = rand() % 100;
printf("| %d ", w[i]);

在第二个循环中,每次循环开始时,j0开始

            for (j = 0; j < batch[i]; j++) {
// first time through the loop, j is 0
}

关于c - 嵌套循环中的 srand() 相同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23359498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com