第19講 座標の工夫による魔方陣自動生成ソフトの高速化

第9話 乱数を使いセルに入れる数字の始まりを変えるには?

乱数を使う・・・ということは、第7話で述べておきましたが、
具体的にはどうしたらよいのでしょうか。

16以下の整数をランダムに発生させるには、
rand()%16
とすれば良いし、25以下なら
rand()%25
を使えば良いのです。
一般的にするためには、
rand()%(n*n)
としておけば良いですね。

rand()%(n*n)をつかって、始まりの数字を変えることができたとしても、
14,15,16,1,2,3,4,5,6,7,8,9,10,11,12,13
4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3
9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8
のように循環させないと、
あらゆる場合を網羅することになりません。
循環させるにはどうしたらよいのでしょうか。
ヒントは、rand()%(n*n)に隠されています。

コードの
long f(int **x,int n,long cn,int g){
   int i,j,s,t,w,v;
   s=g/n;
   t=g%n;
   for(i=1;i<n*n+1;i++){
     x[s][t]=i;
の部分を工夫すれば良いのです。
他にも方法はあるかも知れませんが、
私は、
int ii,iii;
と変数を2つ用意して、
long f(int **x,int n,long cn,int g){
   int i,j,s,t,w,v;
   s=g/n;
   t=g%n;
   ii=rand()%(n*n);
   for(iii=1;iii<n*n+1;iii++){
     i=
・・・;
     x[s][t]=i;
としました。
皆さんの・・・部分を考えて下さい。
循環できるようにするには、どうしたらよいですか。

第8話へ 第10話へ

a

eclipse c++ 入門講義第1部へ

魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ