emath BBS

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

No.8689  Re[4]: saloon #790 表の中にランダムな数字を入れる方法
発言者: tDB
発言日: 2010 03/03 09:36
発言元: ntchba346067.chba.nt.ftth.ppp.infoweb.ne.jp
無限ループに陥ることがありますね。
脱出を試みました。

% -----------------------------------------------------------
\documentclass{jarticle}
\usepackage{emath}
\usepackage{emathPl}
\usepackage{EMbigint}
\usepackage[perl]{emathRn}
\begin{document}
\hairetusyokika{kisyutu}% 使用した乱数列を保存して重複使用を避ける
\calcval{time()}\seed
\Strsep\seed{.}\seed\dmy
\ransuuretu*[seed=\seed]{1}% 乱数初期化
\noindent
% 表を4個作るループ
\Ifor\tblnumber{0}{10}\Do{%
% 1〜25の乱順列
\Cfor{\edef\kekka{1}}{\kekka>0}{}\do{%
  \ranzyunretu<min=1,max=25,kosuu=25>\zstr
  \hairetukakunin{kisyutu}\zstr\kekka% 既に使用した乱数列を排除
  \ifnum\kekka>0%                重複したら
    \bigIAdd\seed{9713}\seed
    \ransuuretu*[seed=\seed]{1}% 乱数再初期化
  \fi
}%
% tabular 環境の中に置く文字列を初期化
\edef\tmpa{}%
% 列番号
\def\ival{0}%
% 乱順列は csv列ですから,コンマ区切で切り出し,tabular 環境内の文字列を構成
%     乱順列 \zstr が 
%        1,3,5,7,9,11,13,15,17,19,21,23,25,2,4,6,8,10,12,14,16,18,20,22,24
%     だとすると
%     以下の操作で文字列 \tmpa は
%        1&3&5&7&9\\ \hline 11&13&15&17&19\\ \hline 21&23&25&2&4\\ \hline 6&8&10&12&14\\ \hline16&18&20&22&24\\ \hline
%     となります。それを tabular環境に食わせます。
\exfor\tmp:=\zstr\do{%
%   5個ごとに行替え
        \IMod\ival{5}\iival
%   行の先頭には & を前置しない
        \ifnum\iival=0\EMedefappend\tmpa{\tmp}\else\EMedefappend\tmpa{&\tmp}\fi
%   行末に \\\hline を付加
        \ifnum\iival=4\EMedefappend\tmpa{\noexpand\\ \noexpand\hline}\fi
%   列番号をインクリメント
        \Incr\ival
}%
%  tabular 環境で出力
\begin{tabular}{|r|r|r|r|r|}\hline
        \tmpa
\end{tabular}\quad %\\
}%
%\prhairetu{kisyutu}
\end{document}

▼関連発言

8685:Re: saloon #790 表の中にランダムな数字を入れる方法 [tDB] 03/02 22:34
 ├8686:Re[2]: saloon #790 表の中にランダムな数字を入れる方法 [tDB] 03/02 22:38
 │└8688:Re[3]: saloon #790 表の中にランダムな数字を入れる方法 [tDB] 03/03 08:54
 │ └8689:Re[4]: saloon #790 表の中にランダムな数字を入れる方法.. [tDB] 03/03 09:36
 └8690:Re[2]: saloon #790 表の中にランダムな数字を入れる方法 [genio] 03/03 10:28<-last

Pass 保存


CGIROOM