假设我有一个返回随机位的函数,是否可以编写一个在一定范围内统一生成随机数并始终终止的函数?
我知道如何做到这一点,以便它应该(并且可能会)终止。我只是想知道是否有可能编写一个保证终止(并且它不必特别有效。它会有什么复杂性?
这是不总是终止版本的代码
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;
}
}
}