【问题标题】:C: Create randomly-generated integers, store them in array elements, and print number of integers stored in each elementC:创建随机生成的整数,将它们存储在数组元素中,并打印存储在每个元素中的整数数量
【发布时间】:2019-04-14 01:23:49
【问题描述】:

我对@9​​87654323@(以及一般编程)非常陌生,并且几乎不可能理解如何操作数组(我知道数组是什么)。

我正在尝试编写一个程序,在 范围 (1-50) 内生成 100 个随机整数,并将它们存储在数组元素 (1-10, 11 -20、21-30、31-40 和 41-50),并打印存储在每个元素中的随机生成整数的数量,即

  • 1-10 = 20
  • 11-20 = 30
  • 21-30 = 21
  • 31-40 = 19
  • 41-50 = 20

到目前为止,我能想到的最好的是:

void randomNumbers
{
    int count[ARRAY_LENGTH];

    for (int i = 0; i < ARRAY_LENGTH; i++)
    {
        count[i] = 0;
    }

    for (int i = 0; i < ARRAY_LENGTH; i++)
    {
        count[i] = rand() % 50 + 1;
    }


    for (int i = 0; i <= ARRAY_LENGTH - 1; i++)
    {
        printf("Index %d -> %d\n", i, count[i]);
    }
}

这只是说“元素 1 = 随机数,元素 2 = 随机数”等等。

我不明白如何:

  • 将随机生成的整数存储在数组元素中
  • 将随机生成的整数划分为对应的 元素
  • 告诉程序打印每个生成​​的整数个数 元素范围

【问题讨论】:

  • 你是说你有 5 个 bin,每个 bin 用于存储其范围内的数字吗?我在分组中看不到任何其他点。旁白:i &lt;= ARRAY_LENGTH - 1;i &lt; ARRAY_LENGTH; 更惯用(且可读性更强)
  • 如果随机数 r 在 [1,50] 范围内,然后您希望在 r 在范围内时使用产生 0 的表达式来减小该值1..10,当r 在11..20 等范围内时产生2,然后(r - 1) / 10 产生正确的结果。 (例如,r == 1; (r - 1) / 10 == 0;r == 10; (r - 1) / 10 == 0;r == 11; (r - 1) / 10 == 1;r == 50; (r - 1) / 10 == 4; — 等等)

标签: c arrays element random-seed


【解决方案1】:

以下是生成 100 个随机整数并根据它们的值将它们分组为类别的代码:

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

int main(void)
{
  int i, temp;
  int a[5]; // array to store the frequency
  for(i=0;i<5;i++)
   a[i]=0;
  srand(time(0));  // for generating new random integers on every run
  for(i=0;i<100;i++)
  {
    temp = (rand()%50) + 1; // generates random integers b/w 1 to 50
    a[(temp-1)/10]++;
  }
  for(i=0;i<5;i++)
    printf("%d->%d  = %d\n",i*10+1,(i+1)*10,a[i]); //printing in the desired format
  return 0;
}

【讨论】:

  • 谢谢!有什么方法可以调整代码以便更改范围(例如 1-12、13-20 等)?
猜你喜欢
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
相关资源
最近更新 更多