線形合同法数列が最大周期になる条件(ただし法が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のときの
もいえます。
そうなるとの場合はを先に証明しておいてから、その結果を使えばいいですね。
よりの結果 を使って
同様にの場合は、の結果を使って
の場合は、の結果を使って
…とがにの累乗数をかけた数のときは帰納的に示せれそうです。
それどころか、同じ方法ででなくてもが奇数にの累乗数をかけた数のとき、つまり任意の正整数についていえるんじゃないでしょうか。
やってみましょう。
ラストスパート!
ここでわかっていることを整理しておきましょう。
- 最大周期となるというのはかつであるすべてのでであること
- 任意のについてとなる条件は
- が奇数なら
- が偶数なら ()
に具体的な値を入れて考えてみます。は奇数よりは偶数だからはないですね。よってまずは、のときです。
のとき
このとき、が偶数ならでが奇数ならとなります。これはと一つにまとめられますね。
であるすべてのについてはで割り切れないので、 よって より です。
のときよりです。
よって数列は最大周期となります!
のとき
このときはが偶数ならでが奇数ならです。
の中にが以上となるような偶数はあるか…。
ありますね、です。
よって、となりますから、です。はい、最大周期になりません!
さあ次はのとき…とその必要はありません。のときと同様に以上のときもとなりますから。最大周期になりません。
よってならば最大周期となって、そうでないときは最大周期となりません。
は言い換えると、すなわちです。
はい、これでひと仕事おしまい。
補足
ここでとしておいた布石がきいてます^^; だとは偶数になりませんからね。
おわりに
この記事のほとんどは上記のページに負っています。感謝です。
数学をちゃんと学び始める前の頃の自分でも理解できることを目標として平坦になるよう心がけましたがどうなったでしょうね^^;
最大周期となる条件だけでひいひい言っていますが、線形合同法にはまだまだ面白い宝物が隠されているんじゃないかと思っています。