假设我有一个返回随机位的函数,是否可以编写一个在一定范围内统一生成随机数并始终终止的函数?
我知道如何做到这一点,以便它应该(并且可能会)终止。我只是想知道是否有可能编写一个保证终止(并且它不必特别有效。它会有什么复杂性?
这是不总是终止版本的代码
int random(int n)
{
  while(true)
  {
    int r = 0;
    for (int i = 0; i < ceil(log(n)); i++)
    {
      r = r<<1;
      r = r|getRandomBit();
    }
    if(r<n)
    {
      return r;
    }
  }
}