乱数による開区間の生成
たくさんの空でない開区間を乱数で生成したいとき、l = rand([0, N - 1]), r = rand([l + 1, N])
としていないだろうか?これでは分布に偏りが生じてしまう。例えば、 の出現確率は の出現確率の になってしまう。これを避けるには、
l = rand([0, N]) r = rand([0, N - 1]) if (l <= r) r++ else swap(l, r)
とすればよい。
たくさんの空でない開区間を乱数で生成したいとき、l = rand([0, N - 1]), r = rand([l + 1, N])
としていないだろうか?これでは分布に偏りが生じてしまう。例えば、 の出現確率は の出現確率の になってしまう。これを避けるには、
l = rand([0, N]) r = rand([0, N - 1]) if (l <= r) r++ else swap(l, r)
とすればよい。