我有一个随机数生成器(到目前为止)记录所有出现的数字1-5。有没有办法让这个编码更有效率,所以我不必同时重复整数,case和printfs?
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int frequency1 = 0;
int frequency2 = 0;
int frequency3 = 0;
int frequency4 = 0;
int frequency5 = 0;
for (int i = 1; i <= 10000; i++) {
int randNum = rand() % 100 + 1;
switch (randNum) {
case 1: ++frequency1;
break;
case 2: ++frequency2;
break;
case 3: ++frequency3;
break;
case 4: ++frequency4;
break;
case 5: ++frequency5;
break;
}
}
printf("%s%13s\n", "randNum", "Frequency");
printf("1%13d\n", frequency1);
printf("2%13d\n", frequency2);
printf("3%13d\n", frequency3);
printf("4%13d\n", frequency4);
printf("5%13d\n", frequency5);
cin.get();
return 0;
}
答案 0 :(得分:-1)
你应该使用数组。
#include <cstdio>
#include <cstdlib>
int main()
{
const int FREQ_MAX = 5;
int frequency[FREQ_MAX] = {0};
for (int i = 1; i <= 10000; i++) {
int randNum = rand() % 100 + 1;
if (1 <= randNum && randNum <= FREQ_MAX) {
++frequency[randNum - 1];
}
}
printf("%s%13s\n", "randNum", "Frequency");
for (int i = 0; i < FREQ_MAX; i++) {
printf("%d%13d\n", i + 1, frequency[i]);
}
return 0;
}