Skip to content

Instantly share code, notes, and snippets.

@RYLSnmm
Last active June 16, 2019 13:25
Show Gist options
  • Save RYLSnmm/d80871bdc98b08d594fef09389e62aa0 to your computer and use it in GitHub Desktop.
Save RYLSnmm/d80871bdc98b08d594fef09389e62aa0 to your computer and use it in GitHub Desktop.
読めるランダム文字列を作る

ランダムだけど読みやすいのがいい

漢字や熟語の読みのひらがな 2 文字をローマ字化して欲しい文字数分くっつける

「星」とか「風」とか「仮名」とか「記事」とか、読みが 2 文字ずつの読める言葉になってるのでアルファベット並んでるだけでも比較的読めるはず

手順

言葉は mecab-ipadic の辞書から取リ出す

言葉の文字すべて日本語・読みが 2 文字・「ッ」は含まない、という条件で取り出してローマ字変換してパーツを作る
欲しい文字数になるまでパーツからランダムに取り出してくっつける

  1. make-parts.py でパーツの txt ファイルを出力
  2. その結果が strparts.txt
  3. strparts.txtwords.html をサーバの同じフォルダに置く
  4. words.html にブラウザでアクセス

http://nmm.blog.jp/hp/tool/randpass/words.html

20 文字くらいの例(ローマ字化で文字数が一定じゃなくなるので少しオーバーする)

  • merihikuchizuseyotsutsu
  • noterouichikagigetachiho
  • jigarijiudaokootarisa
  • usadobusuyaeranotenoge
  • moshiyojiterotabosegi
import os
import pandas as pd
import regex
import romkan
# change here
dir = r"C:\files\dl\mecab-ipadic-2.7.0-20070801"
kanaset = set()
for file in [f for f in os.listdir(dir) if f.endswith(".csv")]:
path = os.path.join(dir, file)
df = pd.read_csv(path, encoding="euc_jp", header=None)
for index, row in df.iterrows():
ja = row.iloc[0]
yomi = row.iloc[-2]
if regex.fullmatch("\p{han}+", ja) and len(yomi) == 2 and not "ッ" in yomi:
kanaset.add(yomi)
with open("strparts.txt", "w", newline="\n") as f:
f.writelines([romkan.to_hepburn(kana) + "\n" for kana in kanaset])
kako
kuu
mino
todo
dome
sogo
hote
ido
zushi
aza
nuhi
chiko
bohi
tsume
suda
yaji
mube
kiu
tano
kima
soro
kazo
nachi
sano
seda
jii
taka
kuya
kudo
suya
yoto
riya
nie
wano
hii
dai
uchi
toshi
hima
yaku
shihi
gubu
jiku
moto
ima
ore
jiyo
yugi
taha
sehi
tagu
mada
karu
jimu
hine
yuke
obi
miku
chiya
ama
pitsu
jimi
nobe
nira
satsu
daho
shiku
tora
dare
hodo
maze
oko
yago
nibu
hiri
ii
toro
mato
muhi
kuhi
kure
hato
ito
eko
taro
kan
buka
uta
dada
yotsu
safu
un
shisa
numa
saji
ketsu
kune
hei
nishi
oni
baka
fuku
iko
uro
sumo
kiba
washi
oga
kibo
abe
iyo
oki
oe
yame
mime
kui
soya
bano
igi
koyu
kate
yuri
kane
hira
chiku
oya
keu
shigi
hon
jichi
yai
hai
yogo
nashi
kumi
kin
kera
naga
fuka
chii
miko
mima
ibo
zashi
semi
teu
kyo
fuse
yuta
mura
metsu
waji
nata
on
ota
baba
zake
netsu
yuni
bishi
kuki
nise
rin
nin
tawa
are
maro
robo
gechi
shibo
ban
zeni
mano
rusu
matsu
gen
miru
geno
mawa
fune
wake
sobu
mimi
kou
hami
aso
uyo
michi
buta
nono
nigo
muji
sogi
chimi
fumi
soda
shin
tsuta
dana
ara
gibo
ata
ake
busu
yoji
otsu
wami
kubo
kebu
jie
kuno
sube
fude
maga
eso
seze
sazo
goga
aba
keya
zaru
kaka
segi
bou
mugi
eda
fuzu
kibe
ago
muki
kao
kuchi
noso
deki
fuyu
soki
ina
bako
komi
chishi
tobu
sochi
bugu
tsuku
sumi
zezu
gama
nida
raku
neo
goro
hatsu
tosa
ron
hen
kemu
tochi
uto
shido
kiku
ami
note
muro
sami
moda
reki
haya
ibi
yomi
eno
hebi
todu
muni
uka
zako
sena
goi
soka
fuma
richi
giko
kino
gite
sori
kidu
yayu
fuyo
kosu
yahi
daku
odu
asu
hasu
zaka
noji
sabe
shiko
shige
kuri
tou
ike
nuta
moro
mochi
edu
noro
koko
neu
nuri
nana
deku
chino
hano
soji
tomo
saki
kebo
dao
nari
kuji
chiyu
kara
biji
mita
teki
suri
buhi
sudo
sasa
tone
kise
ruru
sho
shiki
jigo
beru
maru
geka
muda
kushi
tsuna
meda
kuni
shime
una
fushi
hoso
goshi
nichi
yoso
chigu
gaku
goe
ude
nagu
aka
uge
shite
deshi
taki
kashi
wani
kata
dedu
hamo
kuza
hiyu
giku
udu
guge
aha
gun
kobu
ise
sasu
bari
eta
sobi
koi
bin
goto
chie
giji
hogu
noha
yogi
tsuyu
yubu
ren
waya
kare
zatsu
atsu
toda
koe
tana
guzu
yuku
homi
doi
yana
tori
ade
ben
imo
sai
tono
namu
hotsu
dafu
yoka
kihi
muya
iza
nabi
hitsu
hata
kaze
zuri
oda
neko
bon
seri
ushi
habu
tsuma
zoku
yoze
noba
megu
yuchi
yaya
jido
hiba
tama
meku
iba
toma
doko
kasu
zuru
jibi
tate
san
teko
nuno
boki
yadu
shidu
sugi
kodu
pou
mute
hiku
geri
kari
igu
saru
saha
ana
kechi
mite
toi
yazu
sero
you
toka
nose
gero
men
gachi
io
ori
hihi
tero
kame
tsuro
mise
chinu
meze
karo
kezu
hachi
yaho
tsuno
suka
oso
gobu
waki
in
tsura
moshi
botsu
wae
yaba
moki
yako
heta
chiji
doro
neba
hibu
buyo
iya
iga
yushi
sari
age
tsuze
boro
zai
horo
hoho
toge
ishi
tsuto
suzo
naki
gome
ewa
kahi
cho
eji
gedo
furo
kaga
jitsu
bimi
nio
tabo
sou
hoka
sue
habi
yagi
memu
kido
kedo
keba
hoji
domo
mabe
kitsu
nae
boshi
kigu
seji
hao
geji
niu
riku
bora
dashi
magi
sada
seo
kano
noya
sachi
yuu
izu
uno
tsube
jigi
tsuha
bise
shiza
mago
gowa
yoda
shito
wara
bushi
ton
kika
hiza
maho
zuku
hire
mize
koki
dogo
susu
tsuru
yabu
edo
kiji
mumi
tsumi
oji
hago
taya
mori
bira
kaku
han
mayo
yoru
neda
haki
kage
muga
gosa
ui
rifu
yusu
ada
mama
nano
tao
boku
rumi
hari
wagi
suko
miyu
ue
ufu
hike
rina
wada
gozu
gomi
ou
kasa
mabi
yuki
nina
geda
son
wako
nume
deze
shii
toya
koka
yumi
sago
tsugu
yaga
kusa
nuru
giki
kayu
sude
mou
gote
roku
toho
kaza
miho
sake
mesu
shimi
shiga
noho
teno
rita
dabi
usu
wabi
mie
kuo
koji
mara
yane
sana
kiza
tomi
goke
hiko
koda
shiri
geza
mayu
haru
ryo
omu
chima
shina
kema
kimo
totsu
kigi
jina
hama
miki
hora
rise
nii
koza
memo
hiro
gufu
jiro
tage
shiji
tsuko
boya
doda
haha
ome
mera
ase
soma
taho
gan
yudu
bashi
rou
tame
hode
tau
kishi
yuru
haji
taku
iki
yami
osu
ane
biku
buyu
igo
koro
sagu
beki
mosu
hade
yada
zen
echi
tobi
man
tona
muku
bii
seki
uzu
chika
hiru
nobo
yuge
gimi
tsubo
kono
kobo
hana
nire
koya
sowa
hero
hichi
hame
sewa
yoshi
uo
tami
bai
maha
boke
goze
yose
gomo
jima
bone
nedo
shike
yuo
tofu
ono
mafu
tode
hozo
rika
hime
oze
rii
nou
tsui
kai
koma
abu
hido
negi
ae
yoza
nane
keshi
kesa
jita
yawa
shiso
tabi
shiwa
haka
kana
koshi
tsudo
gohe
koku
saku
ezu
riji
chigi
mui
dora
chizu
chin
ware
oi
hoo
deha
sechi
guzo
yuhi
udo
daki
mari
fue
higa
mizu
isu
doru
fube
kote
gei
mina
miwa
shiru
mishi
hena
wasa
azu
uza
ube
soga
furi
nene
dobu
homa
ja
moyo
sosu
yatsu
iku
mau
kuka
yuga
biki
dani
uko
hin
samu
seko
sado
hifu
ran
hie
zaha
tari
ari
ifu
nade
hobi
sushi
tara
kuro
tagi
sobo
hoi
yora
shiba
tega
kii
naka
mike
aho
mizo
gosu
goza
noma
bochi
yabi
ashi
chiwa
rena
kuso
goma
ibu
jihi
odo
iha
risa
shibi
fui
kaki
hani
koto
gatsu
jiri
nan
niga
rau
fuso
azo
neji
hosa
kiki
muke
tetsu
mazu
hito
ao
jiko
uga
sudu
nagi
tsugi
gaki
node
kafu
kome
nawa
noda
daba
nuku
getsu
tsuga
egi
hadu
uha
gou
dako
yake
kaso
jishi
funo
giwa
doki
hase
seme
hobu
ugo
haba
oka
toyo
ura
suki
sen
buji
isa
neri
zou
aji
musa
tsuji
naba
mata
shibe
soo
gao
shio
haza
yaka
same
nasu
zaga
tare
rino
kago
gabu
jisa
guchi
heya
kero
pen
sashi
midu
naya
togi
sate
tatsu
tsuka
mage
nen
jiso
fuko
yuda
momo
kuze
raba
ruri
waro
kazu
yoha
tsuri
furu
china
kiro
en
shifu
kodo
kibu
sara
fuki
mugo
rogi
naji
giga
mio
bei
yama
hota
kuge
jiru
kire
kuga
waga
gihi
jin
jo
oke
suge
sota
nita
naze
yaki
oto
jiu
eri
uhi
sawa
yue
yugo
saga
heso
mushi
geya
hiso
katsu
ete
uze
ayu
kegi
mida
muta
nado
suji
fun
soni
hara
hoko
niza
heki
yoro
chiri
kuma
rima
kisu
ju
sao
gifu
goka
toji
sedo
yasa
suba
sedu
kabo
shichi
ritsu
gyo
yuze
bigi
mubi
koke
yara
imi
zui
ose
kun
niku
tsumo
shibu
suwa
yabe
kene
hane
roba
tadu
muma
hake
sare
keri
rishi
hado
mogu
dake
kute
rashi
miri
ezo
bara
kuna
jike
mibu
ite
ruka
kuzu
yuka
ako
tema
miyo
yura
saza
tachi
bibi
iri
tsuki
bui
yui
yato
kugi
mogi
yashi
uda
natsu
noshi
chida
bane
nabe
hori
meshi
chime
mosa
mue
tase
sega
kifu
toba
ida
ano
fuu
riyo
wagu
goba
roka
hisa
yodo
shu
yuba
nate
obe
riro
nogi
kori
tamo
sase
miso
gaka
yowa
eba
yude
mira
taga
hemi
kiga
achi
mae
zei
kuba
gishi
sufu
soyu
yori
kada
nama
kuda
tashi
deto
mao
geta
kase
sabi
zufu
nobu
gida
kutsu
sata
tsuya
kira
sae
tada
hide
utsu
yuza
pin
teba
sofu
rao
tosu
uma
rio
naru
hodu
ubu
kochi
kayo
yoki
hio
nara
gori
geshi
haze
noi
tete
nedu
soku
boma
fusa
nuka
moji
gesu
kuko
ai
yusa
zue
kita
oha
goya
gaso
zeze
hogo
kagi
bata
himo
gika
kiya
soko
den
mai
buri
muko
ogo
hina
oma
chita
tsuda
sode
chibu
basa
doyo
muno
gaya
kose
taji
hiki
mune
hafu
hiu
kami
shigo
shida
hita
tsutsu
bika
maku
chichi
neya
kotsu
rachi
suso
rito
kito
dama
sobe
abi
fuke
sono
kado
kogi
uni
jiga
bugi
kia
agu
sone
tado
meji
kemi
tote
miha
riho
hone
yoko
chiki
ate
seba
mane
haku
zan
kagu
kobi
hida
gimu
sese
hoya
yome
nochi
chisa
tae
gomu
suu
yota
sora
moo
jio
shita
obu
kimu
kisa
toke
kozo
kura
bun
mon
che
mase
nomo
jibu
mono
sui
mito
omo
nani
tome
muge
saho
egu
fuji
dodu
wachi
tsuwa
yume
nada
moko
gogi
runa
toki
roza
goki
itsu
yano
nezu
kiyo
nemu
ine
niri
keta
neki
aze
mefu
kuwa
kaya
awa
mahi
agi
toso
shide
yao
gushi
mabu
suna
kego
tsuchi
deme
hae
niji
emu
habe
gui
nori
kugo
hizo
jibo
taru
buchi
nodu
taba
nika
kofu
kabu
shiho
hare
notsu
gabi
ie
iwa
uho
kuta
hazu
sako
meri
susa
yuzu
fuchi
yaso
shima
kaba
fugu
rei
nare
soshi
min
kachi
toga
koba
ino
hiwa
yuno
dame
suke
kore
toko
zuda
niki
zasu
naho
seyo
shiya
uji
toku
nebi
tago
deba
soha
geki
asa
kamo
uwa
raga
yae
roji
kogo
yuya
buba
yari
baku
kena
nuki
kubi
sane
iro
one
gumi
himi
guu
nuda
suma
date
sato
hohi
chiyo
gubo
yomo
chise
kowa
yagu
ani
gata
degi
riko
tsuge
goyu
remi
gasu
nai
neto
goji
buke
mani
fuwa
miya
afu
sutsu
maya
hibo
hada
jifu
rie
iso
mure
mego
made
umu
kehi
chigo
kawa
kuru
kaji
haga
biu
tako
iho
tsuu
mamo
kumo
misa
nui
kie
megi
seta
wata
kei
ena
babi
chiso
tsute
koze
fubo
hibi
muchi
suno
pai
tsue
uke
kimi
esu
meto
oza
kiri
hagi
emi
suga
fubi
suzu
ten
oku
kake
duke
yabo
nago
mutsu
kio
mona
suse
nazo
kato
naro
yasu
kubu
gose
abo
gawa
sama
too
hika
yochi
hogi
ege
gafu
tei
yobe
tabu
kida
tsuyo
nei
tayu
tsubu
beni
maki
shino
hise
tsuba
eto
garo
nema
kuku
sha
oro
yon
kama
wase
meki
dan
hashi
mana
hino
fura
owa
goku
fuze
yuyu
shie
giri
risu
rihi
kobe
zawa
uku
gigi
kani
mika
gashi
dou
yuma
oba
noge
moe
futsu
tsumu
rufu
shimo
mii
hobo
noto
gin
uba
gubi
rai
saso
batsu
bogo
imu
eki
ogi
zuga
chidu
sune
kiko
kiso
mede
gofu
gari
miza
doba
saka
befu
gara
ebi
nami
waru
kona
hiya
mega
kaho
gake
seto
romi
mami
noke
uru
yani
nito
dei
masu
nomi
soso
yuna
nora
niwa
muri
tani
betsu
sera
niho
yone
wado
umi
tose
tsuke
suta
kue
jiki
mashi
sun
nushi
buto
geko
maka
aru
bubi
geba
bagu
funa
biso
tohi
hera
mado
kabe
yudo
yoku
yoi
seno
rafu
kume
fuya
maji
mine
waka
kota
kega
kabi
mame
ume
kine
yobi
ide
daha
mako
chitsu
futo
aa
gima
machi
dodo
mozu
waku
wana
ema
kiwa
kizu
gobi
mena
tsudu
nima
yata
miba
haro
hage
ei
aya
tade
yona
teru
heda
eshi
nabu
koo
wabu
yubi
zama
kina
shishi
buna
yosa
doku
ibe
jiba
kibi
dote
hasa
hige
patsu
tera
rui
hou
hate
some
noki
biwa
moya
yado
sahi
kigo
soba
zasa
noe
soi
uki
fuda
noko
nebu
dewa
sagi
yoyo
bachi
kedu
wan
une
uri
sani
tayo
migi
gai
komo
fugi
koga
hiji
zehi
cha
daka
rigo
omi
niya
nodo
datsu
roshi
tsushi
setsu
aki
take
soto
nue
butsu
ita
kinu
sei
mezu
sugu
hoda
oshi
nino
kugu
aku
deyu
dohi
kon
nobi
nigi
sayo
moku
gaga
none
osa
doma
higo
higi
ame
shiro
jika
medo
fugo
oo
hako
waza
tabe
etsu
ere
kuse
sayu
pari
era
sema
kusu
ute
yono
ato
ika
hoki
gebi
tai
hofu
sotsu
nusa
nase
gogo
iji
wago
miu
dachi
guze
saba
seya
inu
shika
jiho
dota
chiho
modo
retsu
nao
mitsu
momi
sugo
ruji
saya
wari
futa
iu
kuto
esa
misu
buma
kime
kichi
hoshi
jida
ugu
make
an
kae
naha
aga
jiji
towa
sebe
gago
ebe
riki
tan
tsune
mare
boba
tata
buki
jiza
hedo
saze
usa
gochi
ken
yachi
mei
ochi
mete
tobe
fuba
hishi
ichi
masa
don
shitsu
chiba
uso
tane
shizu
dona
shira
dono
sazu
nota
<!doctype html>
<meta charset="utf-8">
<style>
body {
display: flex;
flex-flow: column;
align-items: center;
}
.control {
margin: 30px 0;
}
#output {
border-top: 1px solid #ddd;
padding: 0 30px;
min-width: 250px;
}
</style>
<div class="control">
文字数:
<select id="len">
<option>4</option>
<option>8</option>
<option>10</option>
<option selected>20</option>
<option>30</option>
<option>40</option>
<option>50</option>
<option>60</option>
<option>70</option>
<option>80</option>
<option>90</option>
<option>100</option>
</select>
文字くらい
<button id="make">つくる</button>
</div>
<div id="output"></div>
<script>
let parts
let loaded = false
const xhr = new XMLHttpRequest()
xhr.open("GET", "./strparts.txt")
xhr.send()
xhr.onload = function() {
parts = xhr.responseText.trim().split("\n")
loaded = true
}
const make = function(min) {
let txt = ""
while (txt.length < ~~min) {
txt += parts[~~(Math.random() * parts.length)]
}
return txt
}
const getElem = function(id) { return document.getElementById(id) }
const getLen = function() { return +getElem("len").value }
const elem = function(tag, inner) {
const el = document.createElement(tag)
el.innerHTML = inner || ""
return el
}
const initArray = function(size, fn) {
const a = []
for (let i = 0; i < ~~size; i++) {
a.push(fn(i, i))
}
return a
}
getElem("make").onclick = function() {
if (!loaded) return
const output = getElem("output")
const len = getLen()
output.innerHTML = ""
initArray(10, function() { return elem("p", make(len)) })
.forEach(function(e) {
output.appendChild(e)
})
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment