emath BBS

新規発言一覧最新記事過去一覧検索HOME

No.7302  Re:ランダムな順列の作り方
発言者: 田中徹
発言日: 2008 06/03 00:43
発言元: p0230a5.nigtnt01.ap.so-net.ne.jp
> 重複を無くして、0〜9の10個の並べ替えを作りたいと
> 思っています。

適当な回数、配列の要素をシャッフルする案です。

また、アイデアだけですが配列から1つずつ要素を取り出して並べる方法もありそうです。

# Ifor を用いたテーブルの記述に関しては body を append して
# 一気にはき出す方法が最近奥村先生の掲示板で . さんから
# 発言がありましたのでそちらを参考にしてください。


%% Re7301.tex
\documentclass[a4paper,fleqn]{jarticle}
\usepackage[perl]{emathRn}

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\Dim{10}% 配列数
\def\ShuffleCnt{20}% 入れ替えを行う回数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 配列名
%% FOO 0 〜 \Dim-1 まで格納された配列
%% 入れ替え作業用配列
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\edef\WorkN{1}%
\hairetusyokika{Work}
\IAdd\Dim{1}\MaxIdx%
\edef\FOON{\Dim}
\Ifor\Idx{1}{\MaxIdx}\Do{%
\ISub\Idx{1}\Cnt%
\edefhairetu{FOO}{\Idx}{\Cnt}%
}%
\Ifor\Idx{1}{\MaxIdx}\Do{%
\hairetu{FOO}{\Idx}
}
\Ifor\Count{1}{\ShuffleCnt}\Do{%
\Iransuuretu[\Dim]{1}\IdxA%
\Iransuuretu[\Dim]{1}\IdxB%
\IAdd\IdxA{1}\IncIdxA%
\IAdd\IdxB{1}\IncIdxB%
%% 配列要素の入れ替え
\edefhairetu{Work}{1}{\hairetu{FOO}{\IncIdxA}}%
\edefhairetu{FOO}{\IncIdxA}{\hairetu{FOO}{\IncIdxB}}%
\edefhairetu{FOO}{\IncIdxB}{\hairetu{Work}{1}}%
%%
}%

\Ifor\Idx{1}{\MaxIdx}\Do{%
\hairetu{FOO}{\Idx}
}
%\prhairetu{FOO}
\end{document}


▼関連発言

7301:ランダムな順列の作り方 [st] 06/02 21:55
 └7302:Re:ランダムな順列の作り方 [田中徹] 06/03 00:43
  └7303:Re[2]:ランダムな順列の作り方 [飯島 徹] 06/03 00:54
   └7304:Re[3]:ランダムな順列の作り方 [田中徹] 06/03 01:09
    └7305:Re[4]:ランダムな順列の作り方 [飯島 徹] 06/03 01:23
     └7306:Re[5]:ランダムな順列の作り方 [飯島 徹] 06/03 01:55
      └7308:Re[6]:ランダムな順列の作り方 [st] 06/03 11:46
       ├7316:Re[7]:ランダムな順列の作り方 [田中徹] 06/03 23:15
       │└7317:Re[8]:ランダムな順列の作り方 [飯島 徹] 06/04 03:51
       │ └7318:Re[9]:ランダムな順列の作り方 [st] 06/04 23:24
       │  └7319:Re[10]:ランダムな順列の作り方 [飯島 徹] 06/05 01:41
       │   └7320:Re[11]:ランダムな順列の作り方 [st] 06/05 05:09
       └7321:Re[7]:ランダムな順列の作り方 [石原 守] 06/05 10:14
        └7323:Re[8]:ランダムな順列の作り方 [st] 06/05 21:47<-last

Pass 保存


CGIROOM