いうわけで、皆さんからのご指摘のとおり、配列の定義範囲外の領域にアクセスした結果、おかしなことが起きたのでありましょう。バグのないプログラムはない。プログラムは思ったとおりには動かない。3年前シャッフルのアルゴリズムをより良いものに入れ替えてみました。「まだ選んでいないものから適当に選んで後ろに出す」というアルゴリズムです。皆さまご回答ありがとうございます。返信が遅くなりすみません。RAND_MAXで配列の定義範囲外にアクセスしてしまっていたのですね。謎が解けて少し安心しました。86番目の書き込みでみけCATさんよりご提示いただいたプログラムは、今回の課題の「50回入れ替える動作」にどう適用したらいいいかわからず、参考にするのを断念してしまいました、すみません・・・。sizeof(*table);この部分で今回使う13という数字の立場を他者から見てわかりやすくしているのでしょうか?どうしてこれが13になるのかいまいち理解できませんでした。よろしければここでどういう操作をしているのかお教えください。3年前ああ、インデントを整える前のものを貼ってしまいました・・・。解決したようですが、作ってみました。プログラミング初心者ですが、こんな感じでもできました。6番目の書き込みでみけCATさんよりご提示いただいたプログラムは、今回の課題の「50回入れ替える動作」にどう適用したらいいいかわからず、参考にするのを断念してしまいました、すみません・・・。入れ替えを50回行うという条件があったのですね。すいません、見落としていました。sizeof(*table);この部分で今回使う13という数字の立場を他者から見てわかりやすくしているのでしょうか?どうしてこれが13になるのかいまいち理解できませんでした。よろしければここでどういう操作をしているのかお教えください。「配列全体のサイズ」を「1要素あたりのサイズ」で割ることで、配列の要素数を求めています。入れ替え対象としてたまたま同じ数を選んでしまうと、「2つの数を選んで入れ替え」たことにならないのでは?というわけで、2番目の位置を決める時に最初に決めた位置を抜かすようにした改良版。入れ替え対象としてたまたま同じ数を選んでしまうと、「2つの数を選んで入れ替え」たことにならないのでは?2つの数がたまたま同じであっても、いっこうにかまわないのでは?自分の解釈はそういうことです。出題者の意図が正確にはわかりませんので、自分のような部外者があ~だこ~だ言うようなことではないのかもしれません。バグのないプログラムはない。プログラムは思ったとおりには動かない。3年前わかりやすく教えていただけて、助かります。新たにプログラムを考えてくださった方もありがとうございます。入れ替え対象としてたまたま同じ数を選んでしまうと、「2つの数を選んで入れ替え」たことにならないのでは?2つの数がたまたま同じであっても、いっこうにかまわないのでは?自分の解釈はそういうことです。出題者の意図が正確にはわかりませんので、自分のような部外者があ~だこ~だ言うようなことではないのかもしれません。別々の、とは書いていなかったのでどちらの可能性もありますね。両パターン提出してみます。ミクプラは自由にリンクできます。