a[1]="a", a[2]="b", a[3]="c",..., a[26]="z", a[27]=のようにするわけですが、これを 27 個も書くのは面倒なので、 ここでは split() を利用する方法を紹介します。" "
(はスペースを意味します)
split(s, h, r): 文字列 を、正規表現 を区切りとして区切って 配列 に保存し、その個数を返す正規表現 を省略すると、split() はスペース、タブ区切りとなります。 例えば、
x=split("A 23 c"
,h)
の結果は、
, h[1]="A", h[2]="23", h[3]="c"となります。一方、 として
""
(空文字列) を指定すると
文字列を 1 文字ずつ切り離してくれますので、
x=split("A 23 c"
,h,"")
の結果は、
, h[1]="A", h[2]=となります。よって、az の配列は、" "
, h[3]="2", h[4]="3", h[5]=" "
, h[6]=" "
, h[7]="c"
split("abcdefghijklmnopqrstuvwxyz",a,"")で作れることになります。
しかし、スペースも入れて、しかもスペースが適当に出るようにしたいので、 5 回に 1 回くらいスペースが出るようにスペースを 6 個追加して (6/(26+6)=6/321/5)、
N=split("abcdefghijklmnopqrstuvwxyz "
,a,"")
とします。
あとは、 までの乱数を
x=int(rand()*N)+1と作って、これを 40 回やればランダムな 40 字の文字列が作れることになります。