【问题标题】:find new function using given function that generates twice the output of given function使用给定函数查找新函数,该函数生成给定函数输出的两倍
【发布时间】:2018-08-11 07:05:14
【问题描述】:

给定一个以相等概率生成从 1 到 6 的数字的函数。通过对给定函数进行运算来找到一个函数,使得它以相等的概率产生从 1 到 12 的数字。

我的方法: 我正在维护一个计数变量。如果计数是偶数,那么我加 0,否则我加 6 到 f()。但是f()的调用次数是无限的,所以我们不能使用count变量。

【问题讨论】:

  • 到目前为止你做了什么?可以分享源代码吗?
  • @Reborn,我已经编辑了我的问题以包含我的方法。请检查一次。

标签: function probability probability-theory


【解决方案1】:

f6() 成为以相等概率生成从 1 到 6 的值的函数。 我们可以调用f6() 两次并将结果存储在两个单独的变量ab 中。

现在通过使用表达式(a + (b&1)*6),我们可以以相等的概率生成从 1 到 12 的数字。

说明:

ab 的范围是 1 到 6。因为 f6() 生成的数字具有相同的概率。

(b&1) 将返回 01 的可能性相同,具体取决于 b 分别是偶数还是奇数。

现在,如果b&10,则自(b&1)*6 = 0 起,我们将有1 到6 的范围。因此,结果只能是值 1、2、3、4、5、6。

如果b&11,则结果只能是值7、8、9、10、11、12,如(b&1)*6 = 6

【讨论】:

  • 非常简单易懂。非常感谢!
【解决方案2】:

f 以相等的概率绘制从 1 到 6 的整数。现在你想把它扩展到从 1 到 12 的整数。 所以引入 g ,它以相等的概率从 0 到 1 抽取一个整数。

(g \times 6) + f

应该显示所需的行为。

【讨论】:

  • 为什么会有反对票。我混淆了什么吗?我很高兴讨论这个问题。
  • 有人对你的答案投了反对票的原因可能是因为你推导出了一个新函数g(),而问题需要使用相同的函数f()
  • 接受的答案与我提出的答案完全相同 - 唯一的区别是,它不调用 (b&1) 函数。而您可以很容易地看到您可能会这样做:g(b) = (b&1)。
  • 还可以对答案发表评论,请务必给 OP 一个适应和改进的机会,而不是在没有提示的情况下投反对票。
  • 我没有否决您的回答。我不知道是谁干的。是的,你的方法也是正确的。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 2020-04-15
  • 1970-01-01
  • 2012-08-06
  • 2021-10-06
相关资源
最近更新 更多