emath BBS

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

No.7316  Re[7]:ランダムな順列の作り方
発言者: 田中徹
発言日: 2008 06/03 23:15
発言元: p0230a5.nigtnt01.ap.so-net.ne.jp
> 2桁(以上)の百ます計算についても考えてみたいのですが、> 
> 可能でしょうか?
> 
> 即ち、10〜99から10個取って並べる順列を生成したい、という> 
> 事になります。
> 
> 数を90個打つのは大変という事で、この場合簡略表記できる
> コマンドであると、助かります。
> 
> (追加で、色々とすみません。)

EMedefappend の練習をかねて作ってみました。
# 今回の重複なしの乱数列取得は前回のもの(シャッフル)とは異なります。

\Count を 12 にすると 144 マス計算になります。
\Width はテーブル 1マスの幅になります。

# 同じテーブルを作成できないのが玉にキズ.....


\documentclass[a4j]{jarticle}
\usepackage{emathT}
\usepackage[papersize]{emathP}
\usepackage[perl]{emathRn}

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\Count{10}%
\def\StartNum{10}%
\def\EndNum{99}%
\def\Width{3em}%
\def\arraystretch{2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\calcval[d]{(\EndNum)-(\StartNum)+1}\Dim%
\edef\WorkArrayN{\Dim}%
%%%% 列見出し用乱数取得 %%%%
\ISub\StartNum{1}\ArrayVal%
\Ifor*\Idx{1}{\Dim}\Do{%
\IAdd\ArrayVal{1}\ArrayVal%
\edefhairetu{WorkArray}{\Idx}{\ArrayVal}%
}%

\edef\ColArrayN{\Count}%
\edef\ArrayLen{\Dim}%
\Ifor*\Idx{1}{\Count}\Do{%
\Iransuuretu[\ArrayLen]{1}\Pos%
\IAdd\Pos{1}\Pos%
\edefhairetu{ColArray}{\Idx}{\hairetu{WorkArray}{\Pos}}%
\Ifor*\Cnt{\Pos}{\ArrayLen}\Do{%
\IAdd\Cnt{1}\NextCnt%
\edefhairetu{WorkArray}{\Cnt}{\hairetu{WorkArray}{\NextCnt}}%
}%
\ISub\ArrayLen{1}\ArrayLen%
}%


%%%% 行見出し用乱数取得 %%%%
\ISub\StartNum{1}\ArrayVal%
\Ifor*\Idx{1}{\Dim}\Do{%
\IAdd\ArrayVal{1}\ArrayVal%
\edefhairetu{WorkArray}{\Idx}{\ArrayVal}%
}%

\edef\RowArrayN{\Count}%
\edef\ArrayLen{\Dim}%
\Ifor*\Idx{1}{\Count}\Do{%
\Iransuuretu[\ArrayLen]{1}\Pos%
\IAdd\Pos{1}\Pos%
\edefhairetu{RowArray}{\Idx}{\hairetu{WorkArray}{\Pos}}%
\Ifor*\Cnt{\Pos}{\ArrayLen}\Do{%
\IAdd\Cnt{1}\NextCnt%
\edefhairetu{WorkArray}{\Cnt}{\hairetu{WorkArray}{\NextCnt}}%
}%
\ISub\ArrayLen{1}\ArrayLen%
}%


%%%%%%%%%%%%%%%%%%% Table イメージ Set %%%%%%%%%%%%%%%%%%%%%%%%%%
\EMedef\Header{}%
\EMedefappend\Header{\noexpand\sya(W=\Width)[r]}
\Ifor*\Cnt{1}{\Count}\Do{%
\EMedefappend\Header{&\noexpand\hairetu{ColArray}{\Cnt}}%
}%
\EMedefappend\Header{\noexpand\\\noexpand\hlineb}

\EMedef\Body{}%
\Ifor*\Cnt{1}{\Count}\Do{%
\EMedefappend\Body{\noexpand\hairetu{RowArray}{\Cnt}}%
\Ifor*\AmpCnt{1}{\Count}\Do{\EMedefappend\Body{&}}%
\EMedefappend\Body{\noexpand\\}
\ifnum\Cnt<\Count\EMedefappend\Body{\noexpand\hline}
\else\EMedefappend\Body{\noexpand\hlineb}\fi
}%


%%%%%%%%%%%%%%%%% Ifor ループによる Table 記述  %%%%%%%%%%%%%%%%%%
\ISub\Count{1}\DecCount%
$
\begin{array}{IC{\Width}IC{\Width}*\DecCount{|C{\Width}}I}\hlineb
\Header%
\Body%
\end{array}
$

\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