如何应用DRY编码来记录随机数生成器?

时间:2016-03-13 04:55:47

标签: c++ random

我有一个随机数生成器(到目前为止)记录所有出现的数字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;
    }

1 个答案:

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