用C范围内的随机数填充数组

问题描述 投票:0回答:1

[我试图做的是创建一个函数,thay为数组分配内存并用指定范围内的随机数(在我的情况下为50-76)填充它。srand在主体中,我使用[ C0]标头。

<time.h>

我想获得类似unsigned* randomgen(int size, unsigned max, unsigned min) { int i; unsigned* arr = (unsigned*)malloc(size * sizeof(unsigned)); for (i = 0; i < size; i++) { arr[i] = (rand() % (max - min + 1)) + min; printf("%d ", arr[i]); } return arr; } 的数字。发生的情况是生成的数字看起来像60 52 68 ...。这仅在此函数中发生。当我在3526 4582 13224 ...中执行此操作时,会得到想要的结果。

c arrays function random dynamic-memory-allocation
1个回答
0
投票
我已经使用以下代码进行了成功的测试。我认为问题可能出在几件事上,但主要是在本地而不是全局地分配内存。如果这对您没有帮助,我建议您将您尝试应用的完整代码放在这里。

:)

main

它产生以下输出:

void randomgen(int *intarray, int size, int max, int min)
{
    int i;

    for (i = 0; i < size; i++) {
        intarray[i] = (rand() % (max - min + 1)) + min;
        printf("%d ", intarray[i]);
    }
}
int main(int argc, char **argv){
  int *iA;
  int i;

  if ( (iA = (int*)malloc(20 * sizeof(int))) == NULL ){
    printf("error");
    return 0;
  }
  randomgen(iA, 20, 59, 50);

  for (i = 0; i < 20; i++) {
    printf("iA[%d]=%d\n", i, iA[i]);
  }
  return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.