C++ 如何限制C+中随机生成的项的出现+;?
假设一个数组可以容纳10个元素,我想用1到5的随机整数填充它。在C++中,可以用RAND()来方便地完成。 但是我想将数字5的出现次数限制为两次。[最后,数组必须包含两个5s。]C++ 如何限制C+中随机生成的项的出现+;?,c++,arrays,random,C++,Arrays,Random,假设一个数组可以容纳10个元素,我想用1到5的随机整数填充它。在C++中,可以用RAND()来方便地完成。 但是我想将数字5的出现次数限制为两次。[最后,数组必须包含两个5s。] 那么,C++中有什么功能来设置这个约束?< /P> 这就是我到目前为止所做的 for(int i=0; i<10; i++) { num=rand()%5+1; if(num==5) { if(count<2) { count++; arr
那么,C++中有什么功能来设置这个约束?< /P> 这就是我到目前为止所做的
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;
}
for(inti=0;i只需跟踪您是否已经在自定义生成器中生成了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);
}
不能使用rand
,可能是因为您创建了自己的随机函数。好的。还有其他方法可以获得结果吗?第二次之后您不需要5次。是什么阻止您从那时起最多随机4次?将数字5的出现次数限制为最多2次
并且最后,数组必须包含在两个5s中
是不一样的。你想要最多两个5还是正好两个5?如果数组必须正好包含两个5s,那么只有8个随机元素。因此生成8个元素,添加5s,然后重新排列。请不要通过回答这些问题来鼓励不劳而获的问题。我认为5应该被允许两次,而不是一次,否则这就是问题最好的方法。@ PravavSoangdia:发现一个生成器的概念,也很难,语法也很复杂。这说明,还有更多。@ Pravav我已经完成了我的问题。我只是在检查C++中是否有函数。@哼鸭这是个好主意。改变随机范围。谢谢。