第18講 対角線法による魔方陣自動生成速度の1万倍加へ

第8話 シード値(乱数系列の種)を変えると?

  srand(1);
のときは、

11 16 10 23 05
09 20 21 01 14
04 08 12 22 19

17 03 08 12 25
21 18 15 06 05
16 13 10 24 02
07 20 23 01 14
04 11 09 22 19

生成された5次魔方陣=10
魔方陣生成にかかった時間は200.246000秒です。
と約200秒もかかってしまいます。
ですが、
  srand(42);
とすると、
10 21 20 06 08
16 13 12 17 07
15 05 11 09 25

01 23 22 16 03
24 02 06 14 19
09 21 20 07 08
18 15 05 17 10
13 04 12 11 25

生成された5次魔方陣=10
魔方陣生成にかかった時間は1.692000秒です。
なんと、約118倍のスピードで出来ています。
シード値(乱数系列の種)によって、魔方陣生成速度は変わるのです。
では、シード値(乱数系列の種)42はいかにして見つけたのでしょうか。
手動で0から42まで探していったのではありません。
最悪1回につき500秒程度かかります。
平均200秒程度であるとしても、
200×43÷60=約143分もかかります。
2時間13分もの間、
展望のない実験を繰り返したのではありません。
それに、もっと続ければもっとよい
シード値(乱数系列の種)を発見できるかも知れません。
実際に試したのは、0から99までですから、
100の可能性を試したことになります。
すると、手動による実験なら、
200×100÷60=約333分=5時間33分
もの時間を費やしたことになります。

どうしたのか、皆さんは予想つきますね。
そうです。
最適シード値自動探索ソフトを、
組んで実験したのです。
mainだけ少しいじれば、
プログラムは組めます。
皆さん組んで、最適シード値を発見してください。




第7話へ 第9話へ

a


初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ