c++ - 如何限制 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;
}
如果您有任何想法,请随时与我分享。谢谢。
解决方案
只需跟踪您是否已经在自定义生成器中生成了 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);
}
推荐阅读
- r - 按组的操作在一个函数内的函数和跨多个列的选项
- javascript - 使用 Jest 测试 Nuxt + Vuex + Vuetify 的设置
- object - 获取一个通用对象的两个对象
- visual-studio-code - VSCode - 自定义反应片段在 javascriptreact.json 文件和 javascript.json 文件中不起作用
- javascript - Firebase Analytics JS SDK:无法以“items”作为参数记录事件
- user-interface - 如何在 Flutter 中的网格视图末尾添加一个容器?
- google-sheets - 没有使用 min() 函数获得最低值
- angular - 如何在firestore文档中按字符串字段值的一部分进行搜索?
- android - CardView 内的布局重叠
- ota - Pycom gPy 上的 OTA