emath BBS

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

No.8685  Re: saloon #790 表の中にランダムな数字を入れる方法
発言者: tDB
発言日: 2010 03/02 22:34
発言元: ntchba346067.chba.nt.ftth.ppp.infoweb.ne.jp
> 5×5の表の中に
> 1から25までの数字をランダムに表示させたいのですが,

重複なく,ということですね ?
1〜25 を並べ替えた順列を乱数で発生させるには
  \ranzyunretu コマンド
を用います(emathWiki/ranzyunretu 参照)。

\ranzyunretu の出力は,コンマ区切り csv 列ですから,
それを tabular環境の書式に書き換えて,tabular 環境で出力する例です。

% -----------------------------------------------------------
\documentclass{jarticle}
\usepackage{emath}
\usepackage{emathPl}
\usepackage{emathRn}
\begin{document}
\noindent
% 表を4個作るループ
\Ifor\tblnumber{0}{4}\Do{%
% 1〜25の乱順列
\ranzyunretu<min=1,max=25,kosuu=25>\zstr
% 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|r|}\hline
        \tmpa
\end{tabular}\\
}%
\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