首页 > 解决方案 > 如何限制 C++ 中随机生成的项目的出现?

问题描述

假设一个数组可以容纳 10 个元素,我希望它用 1 到 5 的随机整数填充它。在 C++ 中,可以使用 rand() 轻松完成。

但我想将数字 5 的出现次数限制为两次。[ 最后,数组必须包含两个 5。]

那么,C++ 中是否有任何函数可以设置此约束?

这是我到目前为止所做的。

for(int i=0; i<10; i++)
{   num=rand()%5+1;
    if(num==5)
    {   if(count<2)
        {   count++;
            arr[i]=num;
        }
        else
        {   i--;
            continue;
        }
    }
    else
        arr[i]=num;
}

如果您有任何想法,请随时与我分享。谢谢。

标签: c++arraysrandom

解决方案


只需跟踪您是否已经在自定义生成器中生成了 5

class arunAJs_generator {
    int number_of_fives=0;
public:
    int operator()() {
        if (number_of_fives == 2) {
            //return random number 1-4
            return rand() % 4 + 1;
        } else {
            //return random number 1-5
            int value = rand() % 5 + 1;
            if (value == 5)
                ++number_of_fives;
            return value;
        }
    }
};

int main() {
    arunAJs_generator gen;
    int values[10];
    std::fill(std::begin(values), std::end(values), gen);
}

推荐阅读