C++ 有没有办法让函数在第二次出现数字时做一些不同的事情?
我正在尝试制作一个关于游戏结束时奖励给玩家的金额决定方法的小程序。到目前为止,我已经使用了RNG来模拟一轮游戏中发生的事情,但是我被卡住了。我想知道如何设计我的代码,以便在第二次从RNG生成相同的数字时,它能做一些不同的事情C++ 有没有办法让函数在第二次出现数字时做一些不同的事情?,c++,random,C++,Random,我正在尝试制作一个关于游戏结束时奖励给玩家的金额决定方法的小程序。到目前为止,我已经使用了RNG来模拟一轮游戏中发生的事情,但是我被卡住了。我想知道如何设计我的代码,以便在第二次从RNG生成相同的数字时,它能做一些不同的事情 while (active==1) { random=rand()%11+1; if (random==11) { bomb=1; } } 感谢您的回复:)首先,为清晰起见,请应用以下内容: 将MAX定义为您想要的最大值(例
while (active==1)
{
random=rand()%11+1;
if (random==11)
{
bomb=1;
}
}
感谢您的回复:)首先,为清晰起见,请应用以下内容:
MAX
定义为您想要的最大值(例如11)0
和MAX-1
之间使用random
(而不是在1
和MAX
之间)#define MAX 11
...
int count[MAX] = {0};
while (active == 1)
{
random = rand()%MAX;
count[random]++;
...
}
count
数组表示生成每个随机值的次数
因此,在每次迭代中,您可以使用count[random]
来选择要采取的操作。保留(number,count)对的映射:
std::无序地图编号\u频率;
while(活动){
整数=随机数();
++数字频率[数字];
中频(频率数[频率数]==2){
//做点什么
}否则{
//做点别的
}
}
存储以前的号码列表,并每次检查整个列表。为什么要标记?这是C,如果你希望这个是C++,请使用标题而不是使用<代码> Rand < /Cord> @ MGEZZ C++ 03仍然是C++ + Mgetz。我认为它应该被标记为“C”和“C++”,如果只是挑起ListNess种族的轨道;Angew C++98也是如此,这并不意味着我不应该推荐使用
头-1来使用预处理器和rand()。你是一个糟糕的C++程序员。不要再做那种事了。@Puppy:你很难理解字里行间的意思,也很难理解眼前的问题。OP的问题不是特定于语言的。显然,他(或她)使用了 Rand 自己,而他正与C++合作,恰好与C.合作,这从这个问题的上下文中是非常明显和明显的。然而,您(毫不奇怪,正如我之前在这里看到的那样)选择“坚持”语言语义,而OP手头上有很多更基本的问题(从手头的问题来看,这也是显而易见的)。哇!为你的智慧鼓掌!!!对,这不会改变你的答案质量不好的情况。
std::unordered_map<int, std::size_t> number_frequencies;
while (active) {
int number = random_number();
++number_frequencies[number];
if (number_frequencies[number] == 2) {
// do something
} else {
// do something else
}
}