使用数组和rand来计算1-10之间的整数的实例数?

时间:2019-02-10 19:43:18

标签: c++ arrays

系统提示我

  

创建一个长度为11的数组,并使用for循环创建1500个介于1到10之间的随机整数,从而增加循环内的数组位置以计算随机显示的每个数字1-10的实例

显然,我需要的组件是:

int array[11] = {0};
int i;
i = rand() % 10 + 1;
arr[i]++;

我尝试过这样的事情:

for (int i = rand() % 10 + 1; i < 11;   ;)
{
    array[i]++;
}

运行它时没有任何输出。如果有人可以帮忙,我有点受阻。非常感谢你!

3 个答案:

答案 0 :(得分:0)

我想知道你是否在描述这个?

#include <iostream>
int main() {
    int array[11] = {0};

    for (int i = 0; i < 1500; ++i) {
        int j = rand() % 10 + 1;
        array[j]++;
    }

    for (int i = 1; i < 11; ++i) {
        std::cout << i << '\t' << array[i] << std::endl;
    }

    return 0;
}

答案 1 :(得分:0)

这应该做您想要的:

//create array
int array[11];
//fill array with zeros
for(int i = 0; i <= 10; ++i) {
    array[i] = 0;
}
//count random numbers
for(int i = 0; i < 1500; ++i) {
    int randomNumber = rand() % 10 + 1;
    ++array[randomNumber];
}
//print result
for(int i = 1; i <= 10; ++i) {
    printf("Number %d was generated %d times", i, array[i]);
}

这是纯c方式,您当然也可以使用std::cout进行打印。 顺便说一句:这样浪费了索引0,但这就是您描述它的方式。

答案 2 :(得分:0)

使用代码并对代码进行最少的更改,并使用此处提供的组件是单循环实现。

int array[11] = {0}; //COMPONENT 1
int k=0;
int i; //COMPONENT 2
for(int k=0; k < 1500;k++)
{ 
  int i = rand() % 10 + 1; //COMPONENT 3
  array[i]++; //COMPONENT 4 
}
//TO CHECK ANSWER
for(i=0;i<11;i++)
cout<<array[i]<<endl;

我也同意用户jjj的看法,即索引0被浪费了