小编hen*_*nry的帖子

给定一个公平硬币的功能,为有偏见的硬币写一个函数?

我在做一些评审时遇到了这个报道的面试问题(以下引用是我发现的关于这个问题的所有信息):

给定一个公平的硬币的功能,写一个有偏见的硬币的功能,返回头1/n次(n是一个参数)

乍一看我写道:

int biased_coin(n) { //0=Tails, 1=Heads
  int sum = 0;

  if(n==1)
    return 1;

  for(int i=0;i<n;i++) {
    sum += unbiased(); //unbiased returns 0 50% of the time and 1 50% of the time
  }

  if(sum == 1)
    return 1;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用.例如,对于n = 4,它确实起作用:因为给出4个投掷的单个头的概率是4 /(2 ^ 4)= 1/4.但是对于说n = 3,3 /(2 ^ 3)!= 1/3.

假设你不能使用随机数生成器,实现这样的东西的正确方法是什么?

puzzle

5
推荐指数
1
解决办法
3856
查看次数

标签 统计

puzzle ×1