やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

日本人の名字でなく名前をランダム生成する1

 キラキラネームもあるよ。

成果物

 引数など詳しくは上記参照。

デモ

ランダム生成する

$ jfn.sh
みちのぶ    道信
あづみ   亜津魅
としひで    寿秀
いくや   生弥
ふみと   史音
かいどう    凱道
りょうへい 澪平
せいら   惺一空
れんげ   漣花
かずひで    一秀
えいか   瑛海
ぜんた   善汰
ほうせい    峯生
すみか   澄海
りえ  理愛
ともかず    友和
うみほ   海朋
らぶ  羅舞
ひよな   妃陽菜
きりん   輝凛
きあら   絆愛
かずと   一颯
かいら   海萊
とうじ   燈路
るね  輝音
もあ  萌夢
ひろの   広埜
こうが   空雅
まなえ   愛永
ゆつき   唯月
引数 初期値 概要
-n 30 出力件数
-s * 性別。m,f,c,mc,fc,cm,cf,
M(m+mc+cm+c),
F(f+fc+cf+c),
C(c+cm+mc+cf+fc),
*(m+f+c+mc+fc+cm+cf)
-r r 出力件数における性別ごとの比率。r,e,Erはランダム。
e,Eは男女比1対1。奇数時はcを1件追加。
e(m+f+c), E(M+F+C)

取得する(曖昧な条件指定)

$ jfn.sh s '太一'
たいいち    太一
たいが   太一雅
たいち   太一
たいち   太一知
たいち   太一智
たいちろう 太一朗
たいちろう 太一朗
たいちろう 太一郎
たいと   太一人
たいと   太一斗
たいよう    太一陽
たいら   太一良
たかし   太一士
だいご   太一吾
だいち   太一
だいち   太一地

取得する(正確な条件指定)

$ jfn.sh e -f 'わかば' -f ''
わかば   若羽
わかば   若春
わかば   若杷
わかば   若芭
わかば   若葉
引数 初期値 概要
-s * 性別。m,f,c,mc,fc,cm,cf,
M(m+mc+cm+c),
F(f+fc+cf+c),
C(c+cm+mc+cf+fc),
*(m+f+c+mc+fc+cm+cf)
-f 前方一致。
-b 後方一致。
-p 部分一致。
-e 完全一致。
-r 正規表現
-F 前方一致(否定)。
-B 後方一致(否定)。
-P 部分一致(否定)。
-E 完全一致(否定)。
-R 正規表現(否定)。

苦労した点

実行時間

 ランダム生成するときの実行時間を改善した。execution_time.md

件数 時間
5930 47.058s
30 1.515s
1 1.319s
  • 最初はyk/oo系のTSVで実行していた
    • 行数が多く、whileループ回数が増え、遅くなった
      • yk/om系のTSVを作成して行数を減らした
      • whileでなくxargsを使ってループをコマンドに置き換えた

 まだ遅いが、2秒以内での応答はクリアした。シェルでこれ以上の高速化はムリだと思う。

所感

 前に作った名字のと組み合わせれば、日本人のフルネームをランダム生成できるはず。

 でもその前に、抽出したTSVをHTMLにしたい。

対象環境

$ uname -a
Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux