【问题标题】:Filling an array with random numbers in a range in C [closed]用C中范围内的随机数填充数组[关闭]
【发布时间】:2020-07-16 17:11:54
【问题描述】:

我尝试做的是创建一个函数,它为数组分配内存并用指定范围内的随机数填充它(在我的情况下为 50-76)。srandis 在主中,我使用<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 ...。 这仅在此函数中发生。当我在 main 中执行此操作时,我得到了想要的结果。

【问题讨论】:

  • 你将什么传递给randomgen?你在main做什么?
  • 我传递了数组大小的大小,范围最小值的下半部分和最大值的上限。如果它在 main 中完全有效,我在函数中的代码是 thed 并且它实现了我预期的结果
  • 它对我来说非常好用。您是否将最小值和最大值传递给正确的字段?
  • 感谢您的帮助,看来我没有按正确的顺序传递参数。谢谢大家。

标签: c arrays function random dynamic-memory-allocation


【解决方案1】:

乔治。

我已使用以下代码进行了成功的测试。 我认为问题可能是几件事,但主要是在本地而不是全局分配内存。 如果这对您没有帮助,我建议您将尝试申请的完整代码放在这里。

:)

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;
}

它产生以下输出:

53 56 57 55 53 55 56 52 59 51 52 57 50 59 53 56 50 56 52 56
iA[0]=53
iA[1]=56
iA[2]=57
iA[3]=55
iA[4]=53
iA[5]=55
iA[6]=56
iA[7]=52
iA[8]=59
iA[9]=51
iA[10]=52
iA[11]=57
iA[12]=50
iA[13]=59
iA[14]=53
iA[15]=56
iA[16]=50
iA[17]=56
iA[18]=52
iA[19]=56

【讨论】:

  • 感谢您的帮助,看来我没有按正确的顺序传递参数。
猜你喜欢
  • 2021-06-20
  • 2016-07-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多