発言者: 飯島 徹
発言日: 2008 06/04 03:51
発言元: flh1adm062.hkd.mesh.ad.jp
でわ引き続きPerlを利用して^^;
#-------- shuffle.pl -----------------------------
#!Perl -w
use strict;
sub ShuffleArray () {
my $array = shift;
my $len = scalar(@$array);
for(my $i=$len-1 ; $i>=0; --$i){
my $j = int( rand($i+1) );
next if($i==$j);
@$array[$i, $j] = @$array[$j, $i];
}
}
sub Shuffle () {
my @array = @_;
&ShuffleArray(\@array);
my $result = join(",",@array);
$result;
}
# &MakeRandArray(n1,n2,n3);
# n1 : 初期値
# n2 : 終了値
# n3 : 個数
sub MakeRandArray (){
my ($first,$end,$value) = @_;
my @array = ($first..$end);
&ShuffleArray (\@array);
splice(@array,$value);
my $result = join(",",@array);
$result;
}
1;
#---------------------------------------------------
%------------- temp.tex ----------------------------
\documentclass{jarticle}
\usepackage{emathP}
\usepackage{emathT}
\usepackage[perl]{emathRn}
%\usepackage{emathPp}
\myPerlLib{shuffle.pl}%
\makeatletter
\def\Bunkai#1#2{%
\edef\BunkaiBody{#2}%
\setcounter{tempcnta}{0}%
\expandafter\@Bunkai\BunkaiBody,\@empty\@nil{#1}%
}%
\def\@Bunkai#1,#2\@nil#3{%
\addtocounter{tempcnta}{1}%
\expandafter\def\csname #3{tempcnta}\endcsname{#1}%
\def\@temp{#2}%
\def\@EMPTY{\@empty}%
\ifx\@temp\@EMPTY
\else
\def\@@BunkaiBody{\@Bunkai#2\@nil{#3}}%
\expandafter\@@BunkaiBody
\fi
}%
\makeatother
\begin{document}
% MakeRandArray(n1,n2,n3)
% n1からn2の配列をつくり
% それをランダムに並べ替え
% 先頭からn3個を使用する
% \calcval[s]{MakeRandArray(1,100,10)}\temp
% 上の例では1から100までの配列をつくり
% それをランダムに並べ替え
% 先頭から10この数字を\tempに代入する
\calcval[s]{MakeRandArray(10,99,12)}\temp
\temp
\Bunkai{\Alph}{\temp}
\calcval[s]{MakeRandArray(10,99,12)}\temp
\temp
\Bunkai{\alph}{\temp}
$\renewcommand{\arraystretch}{1.8}
\begin{hyou}{IC{2zw}||*{11}{C{2zw}|}C{2zw}I}\hlineb
\sya[r] &\A &\B &\C &\D &\E &\F &\G &\H &\I &\J &\K &\L\\ \hhline{I=#=|=|=|=|=|=|=|=|=|=|=|=I}
\a & & & & & & & & & & & &\\ \hline
\b & & & & & & & & & & & &\\ \hline
\c & & & & & & & & & & & &\\ \hline
\d & & & & & & & & & & & &\\ \hline
\e & & & & & & & & & & & &\\ \hline
\f & & & & & & & & & & & &\\ \hline
\g & & & & & & & & & & & &\\ \hline
\h & & & & & & & & & & & &\\ \hline
\i & & & & & & & & & & & &\\ \hline
\j & & & & & & & & & & & &\\ \hline
\k & & & & & & & & & & & &\\ \hline
\l & & & & & & & & & & & &\\ \hlineb
\end{hyou}$
\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