私は CLRS を読んでいて、50% の確率で 0 または 1 を生成するプロシージャ Rand(0,1) を使用して、a から b の間の乱数を一様ランダムに生成するプロシージャ Rand(a,b) を作成するという問題に遭遇しました。 .
私は次の解決策を考えました。これは時間的に O(b) です。
int Rand_a_b(int a,int b)
{
int i,k=0;
for(i=0;i<b-a;i++)
{
k+=Rand(0,1);
}
return a+k;
}
これに対するより良いアプローチを提案してください。