長さnのバイナリ結果のストリームを、0 と 1 の数が等しいが、ペアごとの結果の偏った頻度で生成するにはどうすればよいですか。 ( freq(01) + freq(10) ) / ( freq(00) + freq(11) ) = k
1 に答える
1
次の遷移確率でランダム マルコフ連鎖を生成します。
0 1
0 1/(k+1) k/(k+1)
1 k/(k+1) 1/(k+1)
基本的に、0 を生成した場合、確率 1/(k+1) で別の 0 を生成します。
注:要件を保証したい場合は、次のアプローチを使用してください
mk 個の等しくない組み合わせと m 個の等しい組み合わせを生成したいとします。
- reserve_eq = m および reserve_uneq=mk とします。
- 等しい確率でランダム ビット 0/1 を生成します。そのビットをcurにしましょう
- 出力電流
- new_cur = (cur,1-cur) を加重確率 (reserve_eq,reserve_uneq) で生成
- new_cur= cur の場合は reserve_eq をデクリメントし、そうでない場合は reserve_uneq をデクリメントします
- cur = new_cur
- ステップ 3 に進む
ステップ 4 で、reserve_eq と reserve_uneq の両方がゼロの場合は終了します。出力文字列の長さは km+m+1 です。
于 2012-02-12T07:12:37.917 に答える