如何实现每 3 次命中 2 到 return 为真?
How to implement a 2 into every 3 hits to return a true?
我正在尝试实现一个通用算法,每 5 次命中中有 2 次 return 为真。2 次是允许的,5 次是命中。简而言之,这意味着如果一个函数被调用 5 次其中的 2 次,它将 return 为真,否则将为假。这是我的尝试,但似乎不正确。关于如何修复它或者是否有更好的方法来解决这个问题的任何建议?
//2 in every 3 hits will return a true.
int hitlimit = 3;
int allowedlimit = 2;
int allowedTracker = 0;
int hitsTracker = 0;
bool test()
{
hitsTracker++;
if(allowedTracker < allowedlimit && hitsTracker < hitlimit)
{
allowedTracker++;
if(allowedTracker >= allowedlimit)
{
allowedTracker = 0 ;
hotstracker = 0;
}
return true;
}
return false;
}
我知道您想生成一个确定性序列,其中包含 allowedLimit
个 1,然后是 hitlimit - allowedlimit
个零。这是一个周期序列,可以很容易地从当前指数计算出来:
int hitlimit = 3;
int allowedlimit = 2;
int hitsTracker = 0;
bool test() {
return hitsTracker++ % hitlimit < allowedlimit;
}
我正在尝试实现一个通用算法,每 5 次命中中有 2 次 return 为真。2 次是允许的,5 次是命中。简而言之,这意味着如果一个函数被调用 5 次其中的 2 次,它将 return 为真,否则将为假。这是我的尝试,但似乎不正确。关于如何修复它或者是否有更好的方法来解决这个问题的任何建议?
//2 in every 3 hits will return a true.
int hitlimit = 3;
int allowedlimit = 2;
int allowedTracker = 0;
int hitsTracker = 0;
bool test()
{
hitsTracker++;
if(allowedTracker < allowedlimit && hitsTracker < hitlimit)
{
allowedTracker++;
if(allowedTracker >= allowedlimit)
{
allowedTracker = 0 ;
hotstracker = 0;
}
return true;
}
return false;
}
我知道您想生成一个确定性序列,其中包含 allowedLimit
个 1,然后是 hitlimit - allowedlimit
个零。这是一个周期序列,可以很容易地从当前指数计算出来:
int hitlimit = 3;
int allowedlimit = 2;
int hitsTracker = 0;
bool test() {
return hitsTracker++ % hitlimit < allowedlimit;
}