線形合同法数列が最大周期になる条件(ただし法が2のべきの場合)
- (追記)もっと簡潔な証明を得ました: 線形合同法数列が最大周期になる条件(ただし法が2のべきの場合) その2 - oupoの日記
はじめに
一部界隈の皆さんはよくご存知の線形合同法数列
(
は初期シード)
は最大周期となることが知られています。
すなわち,
, ... と進めていって
で初めて
と等しくなります。
なぜそんなことがいえるのでしょうか。またどういう条件のときに最大周期になるのでしょうか。
問題
線形合同法数列
が最大周期となる条件はなにか。
この記事ではが
以上の
の累乗のときを扱いましょう。つまり
を
以上の整数として
と表せるときです。
(のときも含めると後に場合分けが必要になるので省きました。ご都合主義です^^;)
具体例
まずは実際に,
,
,
に具体的な値を入れて数列を眺めてみましょう。
,
0 1 2 3 4 5 6 7 8 9 0 1 6 7 4 5 2 3 0 1 …最大周期となる
,
0 1 2 3 4 5 6 7 8 9 0 2 4 6 0 2 4 6 0 2 …最大周期とならない
,
0 1 2 3 4 5 6 7 8 9 1 7 5 3 1 7 5 3 1 7 …最大周期とならない
,
0 1 2 3 4 5 6 7 8 9 0 1 5 5 5 5 5 5 5 5 …最大周期とならない
としても一般性は失われない
実は,
,
の
つが決まれば、初期シード
によらず最大周期になるかどうかは決まります。
これを証明すれば、後の議論においての場合だけ考えればよいことになり楽できます。
それを証明するための準備として周期に関する性質をまとめておきます。
周期に関する性質
具体的なところから、線形合同法数列が
で初めて
の値に戻ってくるものとします。数列の項の具体的な値は今は重要ではないので
,
,
,
としましょう。
ここで重要になってくるのは線形合同法数列がもつ、ならば
という性質です。
数列の項の変化を図に表すと次のようになりますね。
ここで,
,
,
の値にダブりはあるでしょうか? ありません。
まず、,
,
のいずれかが
に等しいとすると「
で初めて
の値に戻る」ということに反するのでありえません。
次に,
,
の中でダブりがあるとするとそこでループができてしまって二度と
の値には戻ってきません。
たとえばのとき次のようになります。
以上の議論は周期が以外のときも成り立ちます。これは直感的理解のための説明です。ちゃんとした証明も難しくはありませんが、この記事では省略します。
上記の説明の通り、線形合同法数列が
で初めて
の値に戻ってくるとき、
,
,
,
,
は互いに異なります。互いに異なるのだからこれらは
個の値からなります。
ここで数列の項はすべて
以上
未満である
個の整数の中からとるのですから、
,
,
,
,
には
以上
未満の整数が一つずつ現れるといえます。
としても一般性は失われないことの証明
任意の,
について、
で最大周期となるならば
で最大周期となることを証明すればよいです。
なぜならこれが正しいとすると、
,
をあてはめて、
で最大周期ならば
で最大周期であること
,
をあてはめて、
で最大周期ならば
で最大周期であること
がいえますから、任意のについて、
で最大周期であることと
で最大周期であることが同値になります。
さて、任意の,
について、
で最大周期となるならば
で最大周期となることを証明しましょう。
のときの数列を
,
のときの数列を
とします。
は最大周期となるのだから、「周期に関する性質」より
,
となる整数
が存在しますね。
であり、二つの数列の漸化式は同じなのだから任意の
について
といえます。
えーここでもちゃんとした証明がめんどくさくなったので^^;、図を使った直感的な説明に逃げます。
これを見るとから
までにダブりがない、すなわち
から
までにダブりがない。また、
すなわち
だと直感的理解ができますね。
よって数列は最大周期になります。
したがって、任意の,
について、
で最大周期となるならば
で最大周期となるといえます。
としても一般性は失われないことが示されましたので、以降からは
の場合だけ考えましょう。
一般項
まずは必ず
以上
未満の整数となりますから
が常に成り立ちます。
ここで数列の一般項を求めてみましょう。
実際に最初の数項を観察してみると
いずれもを法として
より
と予想できます。この予想が正しければ、
よって (
より)
となります。
つまり一般項は と予想できますね。
この予想は数学的帰納法で簡単に証明できます。(省略)
補足
ここではさらっと次の定理を使いました。
ならば
、
この定理はのときで考えてみるととっても当たり前です。
足し算や掛け算した結果の一の位は、足す数や掛ける数の一の位だけで決まりますからね。
が偶数のとき?
まずは簡単なところから条件を絞っていきます。が偶数であるとするとどうなるでしょう。
最初の具体例の一つにもう一度ご登場願いましょう。
,
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 2 | 4 | 6 | 0 | 2 | 4 | 6 | 0 | 2 |
も偶数なので
は常に偶数となってしまいます。
が(偶数)を
で割った余りであり
(偶数)
(商)と表せるから)
しかし、最大周期のとき,
,
,
は
から
までのすべての整数をとるはずだったので、
が偶数だとこれに反しますね。
よって、が偶数のときは最大周期になりません。
が偶数のとき?
では、が偶数のときはどうでしょう。
が偶数かつ最大周期だと仮定します。
ここで周期に関する性質より,
を満たす整数
があります。
だから
はないですね。
は
の倍数だから
は
の倍数となります。
の倍数の違いは
で割った余りには影響しませんから、
よって です。
,
, ...,
は互いに異なりますから矛盾しました。(これは
,
, ...,
が互いに異なることと
からすぐ分かります)
補足
二進数で考えてみるとAが偶数だったら現在の項の最上位ビットが次の項にまったく影響しません。すると最上位ビットが異なりほかのビットは一致する2つのシード値において、それぞれの次のシード値が一致することになります。このとき直感的に明らかに最大周期にはなりませんね。このことをちゃんと証明したのが上の内容です。
さらに補足
,
0 1 2 3 4 5 6 7 8 9 0 1 5 5 5 5 5 5 5 5 この具体例のようにAが偶数だった場合は必ず一定値に収束してしまいます。擬似乱数としてはまったく使い物になりませんね。
余談ですが、あるゲームのあるデータの難読化用XORマスクとしてAが偶数である線形合同法数列が使われていました^^;この例では別に擬似乱数としてぶっ壊れていても全然差し支えはないですが、もしゲーム中のランダム要素でこうなっていたら大変なことになりますね
さて、か
のどちらか少なくとも一方が偶数のときは最大周期にならないことは分かったので、以降では
、
ともに奇数である場合を調べましょう。
という条件
最大周期となるというのは、で初めて
の値に戻ってくるということでした。
つまりかつ
であるすべての
について
であるということです。
ということはに対して
が
になるかどうかが重要になります。
であるかどうかという条件を変形していきましょう。
が
の倍数
が
の倍数
が
の倍数 (
は奇数より)
よって が
の何乗で割れるかに注目しましょう。
正整数が
で割り切れるような最大の
を
で表すことにします。
とおきます。
すると
となります。(ただしとする。
のとき
で
は求まらないから)
を観察する
ここで が実際どうなるのか具体的に見てみましょう。
のとき
1 | 0 | |
2 | 2 | |
3 | 0 | |
4 | 3 | |
5 | 0 | |
6 | 2 | |
7 | 0 | |
8 | 4 | |
9 | 0 | |
10 | 2 |
になにか規則性はないか睨んでみると、
は
と関係がありそうだとわかります。
1 | 0 | 0 |
2 | 1 | 2 |
3 | 0 | 0 |
4 | 2 | 3 |
5 | 0 | 0 |
6 | 1 | 2 |
7 | 0 | 0 |
8 | 3 | 4 |
9 | 0 | 0 |
10 | 1 | 2 |
が偶数のときは
、
が奇数のときは
となっていそうです。
が奇数のとき
になるのは当たり前ですね。奇数を奇数個集めた和は奇数になりますから。
よってが偶数の場合のみを追って
以外も試してみます。さすがに
が大きくなると計算が大変になるのでコンピュータに計算させました^^;
の表
2 | 4 | 6 | 8 | 10 | |
---|---|---|---|---|---|
1 | 1 | 2 | 1 | 3 | 1 |
3 | 2 | 3 | 2 | 4 | 2 |
5 | 1 | 2 | 1 | 3 | 1 |
7 | 3 | 4 | 3 | 5 | 3 |
9 | 1 | 2 | 1 | 3 | 1 |
11 | 2 | 3 | 2 | 4 | 2 |
13 | 1 | 2 | 1 | 3 | 1 |
15 | 4 | 5 | 4 | 6 | 4 |
17 | 1 | 2 | 1 | 3 | 1 |
19 | 2 | 3 | 2 | 4 | 2 |
21 | 1 | 2 | 1 | 3 | 1 |
23 | 3 | 4 | 3 | 5 | 3 |
25 | 1 | 2 | 1 | 3 | 1 |
27 | 2 | 3 | 2 | 4 | 2 |
29 | 1 | 2 | 1 | 3 | 1 |
31 | 5 | 6 | 5 | 7 | 5 |
ですから、何かに
を足した結果が
になっていそうですね。
を引いた結果を表にしてみると
の表
2 | 4 | 6 | 8 | 10 | |
---|---|---|---|---|---|
1 | 0 | 0 | 0 | 0 | 0 |
3 | 1 | 1 | 1 | 1 | 1 |
5 | 0 | 0 | 0 | 0 | 0 |
7 | 2 | 2 | 2 | 2 | 2 |
9 | 0 | 0 | 0 | 0 | 0 |
11 | 1 | 1 | 1 | 1 | 1 |
13 | 0 | 0 | 0 | 0 | 0 |
15 | 3 | 3 | 3 | 3 | 3 |
17 | 0 | 0 | 0 | 0 | 0 |
19 | 1 | 1 | 1 | 1 | 1 |
21 | 0 | 0 | 0 | 0 | 0 |
23 | 2 | 2 | 2 | 2 | 2 |
25 | 0 | 0 | 0 | 0 | 0 |
27 | 1 | 1 | 1 | 1 | 1 |
29 | 0 | 0 | 0 | 0 | 0 |
31 | 4 | 4 | 4 | 4 | 4 |
のとき
、
のとき
…、
は
で
は
だから…と考えるとこの数値は
に等しいと気づきます。つまり
です。
まとめますと、
ということです。
しかしこれはや
が小さいときの結果からの予想に過ぎないので、実際にすべての
や
で成り立つことは証明しないといけません。
偶数
について
の証明
さあ、ここが一番やっかいそうなところです。
関数は
という対数関数のような性質を持ちます。
,
とすると
,
を奇数として
,
と表せますから、
で
は奇数より
となるからです。
変形
とおいて、証明すべき命題を変形しましょう。
を使って
等式の右辺を整理して
両辺にを足して
を使って
ここで
だから (等比数列の和の公式の分母を払った形ですね)
さらにとおくと
となります。
おっと、のときは
は求まりませんから、
のときは別に議論をちゃちゃっと済ませちゃいましょう。
のとき
だから
。また、
だから
が成り立ちます。
具体的な
の値で考えてみる
具体的なの値として
で考えてみます。
を因数分解します。
より
です。
すると、証明すべき等式
をいうためには、二つの式を見比べると
つまり、より
がいえればいいですね。
はすぐわかります。
は奇数より
は奇数だから奇数を奇数個集めた和は奇数より、これは
になります。
するとあとはがいえればいいはずです。
の値が
というのは
で割り切れ
で割り切れないということですから
で割った余りを考えましょう。
であり、
は奇数です。
奇数の乗は必ず
で割った余りが
になります。また
で割った余りが
である数同士の積は再び
で割った余りが
になります。(これは奇数を
とおいたり、
で割った余りが
である二数を
と
とおいたりして実際に計算してみれば明らかです)
よっての累乗は常に
で割った余りが
になります。
よってより
です。よって
がいえます。
これでのとき証明すべき
がいえました。
また、同じようにしてk=5のときの
もいえます。
そうなるとの場合は
を先に証明しておいてから、その結果を使えばいいですね。
よりの結果
を使って
同様にの場合は、
の結果を使って
の場合は、
の結果を使って
…とが
に
の累乗数をかけた数のときは帰納的に示せれそうです。
それどころか、同じ方法ででなくても
が奇数
に
の累乗数をかけた数のとき、つまり任意の正整数
についていえるんじゃないでしょうか。
やってみましょう。
ラストスパート!
ここでわかっていることを整理しておきましょう。
- 最大周期となるというのは
かつ
であるすべての
で
であること
- 任意の
について
となる条件は
が奇数なら
が偶数なら
(
)
に具体的な値を入れて考えてみます。
は奇数より
は偶数だから
はないですね。よってまずは、
のときです。
のとき
このとき、が偶数なら
で
が奇数なら
となります。これは
と一つにまとめられますね。
であるすべての
について
は
で割り切れないので、
よって
より
です。
のとき
より
です。
よって数列は最大周期となります!
のとき
このときはが偶数なら
で
が奇数なら
です。
の中に
が
以上となるような偶数
はあるか…。
ありますね、です。
よって、となりますから、
です。はい、最大周期になりません!
さあ次はのとき…とその必要はありません。
のときと同様に
以上のときも
となりますから。最大周期になりません。
よってならば最大周期となって、そうでないときは最大周期となりません。
は言い換えると
、すなわち
です。
はい、これでひと仕事おしまい。
補足
ここでとしておいた布石がきいてます^^;
だと
は偶数になりませんからね。
おわりに
この記事のほとんどは上記のページに負っています。感謝です。
数学をちゃんと学び始める前の頃の自分でも理解できることを目標として平坦になるよう心がけましたがどうなったでしょうね^^;
最大周期となる条件だけでひいひい言っていますが、線形合同法にはまだまだ面白い宝物が隠されているんじゃないかと思っています。