【问题标题】:How to implement a 2 into every 3 hits to return a true? [closed]如何在每 3 次点击中实现 2 以返回 true? [关闭]
【发布时间】:2021-09-07 07:57:13
【问题描述】:

我正在尝试为每 5 次命中中的 2 次实现一个通用算法将返回一个 true。2 是允许的,5 是命中。简而言之,这意味着如果一个函数被调用 5 次 2 次,它将返回 true,否则返回 false。这是我的尝试,似乎不正确。关于如何修复它或是否有更好的方法来解决这个问题的任何建议?

//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;
}

【问题讨论】:

  • 你能展示一些期望结果的例子吗?并与您使用显示的代码获得的结果进行对比?我问是因为我不知道你的目标是什么。我不清楚“每 3 次点击 2 次”。
  • 如果有人能告诉我为什么它被投票关闭,我将不胜感激
  • @Yunnosch 它基本上意味着如果它的状态 2 在每 5 个中返回一个 true。如果一个函数被调用 5 次 2 次,它将返回 true,否则返回 false
  • 这看起来不像 Java 代码。 java 标签似乎不合适。
  • 删除了java标签

标签: c++ algorithm probability


【解决方案1】:

我了解您想要生成一个确定性的序列,该序列由 allowedLimit 后跟 hitlimit - allowedlimit 零组成。这是一个周期序列,可以很容易地从当前索引中计算出来:

int hitlimit = 3;
int allowedlimit = 2;
int hitsTracker = 0;
bool test() {
    return hitsTracker++ % hitlimit < allowedlimit;
}

【讨论】:

  • 这完全有效。谢谢
猜你喜欢
  • 2013-09-22
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 2023-01-16
相关资源
最近更新 更多