ランダムな文字列をメモ帳に書き出したい

ランダムな文字列をメモ帳に書き出したい
IDやパスワードなどを生成する際に、
意味を持たないランダムな組み合わせの文字列にしたい事があります。

テストデータを作ったり、全く想定できないパスワードを作る際に利用します。
一つ、二つ程度ならばガチャガチャとキーボードを叩けば作れますが
何十個も作るとなると、ちょっと大変ですね。
そんな問題をUWSCで解決してみましょう。


8文字のランダムな文字列10個をメモ帳に書き出してみます。

IDPASS = ""
//文字列10個出力
FOR A = 1 TO 10
    //文字数は8文字
    FOR B = 1 TO 8
       IDPASS = IDPASS + RETURNCHAR()
    NEXT
    IDPASS = IDPASS + "<#CR>"
NEXT
SENDSTR(EXEC("NOTEPAD"),IDPASS)

FUNCTION RETURNCHAR()
SELECT RANDOM(26)
CASE 0
RESULT = "a"
CASE 1
RESULT = "b"
CASE 2
RESULT = "c"
CASE 3
RESULT = "d"
CASE 4
RESULT = "e"
CASE 5
RESULT = "f"
CASE 6
RESULT = "g"
CASE 7
RESULT = "h"
CASE 8
RESULT = "i"
CASE 9
RESULT = "j"
CASE 10
RESULT = "k"
CASE 11
RESULT = "l"
CASE 12
RESULT = "m"
CASE 13
RESULT = "n"
CASE 14
RESULT = "o"
CASE 15
RESULT = "p"
CASE 16
RESULT = "q"
CASE 17
RESULT = "r"
CASE 18
RESULT = "s"
CASE 19
RESULT = "t"
CASE 20
RESULT = "u"
CASE 21
RESULT = "v"
CASE 22
RESULT = "w"
CASE 23
RESULT = "x"
CASE 24
RESULT = "y"
CASE 25
RESULT = "z"
default
RESULT = "a"
SELEND
FEND

UWSCのRANDOM関数(0~指定数字未満のどれかを返す)を使って
ランダムな数値を取り出し、その数値をアルファベットに変換します。
それを8文字×10個繰り返すという、
非常にわかりやすいスクリプトです。

これだとちょっと冗長だと思う方はもう少し短くしてみましょう。

文字にはすべてASCIIコードという値が割り当てられています。
そしてUWSCには文字とASCIIコードを変換する関数があります。

UWSCでは「a」のASCIIコード97は、「z」のACIIコードは122となっています。
このACIIコード表を見ればわかるように「a」から「z」まで順番に97から122と数値が割り当てられていますので
この仕組みを利用しましょう。

IDPASS = ""
//文字列10個出力
FOR A = 1 TO 10
    //文字数は8文字
    FOR B = 1 TO 8
       IDPASS = IDPASS + RETURNCHAR()
    NEXT
    IDPASS = IDPASS + "<#CR>"
NEXT
SENDSTR(EXEC("NOTEPAD"),IDPASS)

FUNCTION RETURNCHAR()
RESULT = CHR(97 + RANDOM(26))
FEND

だいぶスッキリしました。

では、もう少し要件が細かくなった場合はどうしましょうか。
例えば、下記に対応するのはどうでしょう。
(1)アルファベットの大文字も利用したい
(2)数字も利用したい
(3)5文字のIDと10文字パスワードをセットで10個出したい
(4)IDの先頭文字に数字は使いたくない

複雑そうに見えますが、1つ1つ組み立てていきましょう。


続きは、ログインもしくは、登録してください



このページの先頭へ