ランダム文字列の生成
ランダム文字列の生成は以下のような場面で使用される
パスワード生成
トークン生成
セッションID生成
テストデータ作成
どういう文字種を使うか。
単語など、ある程度の意味を持った塊を使うか。(完全ランダムだと実態と乖離する)
基本的には以下のような考え方がある。
単純に毎回ランダムな文字を取得して、それを結合する。
グループの選択とその中でのランダムな文字の取得を繰り返し、それを結合する。
先に使う文字をランダムで取得し、それをさらにシャッフルする。
生成時点で条件を満たすようにする。
生成した結果に対して検証を行い、満たさない場合は再生成する。
JavaScript
code:generateRandomString.js
/**
* @param {string} s 使用する文字の一覧
* @param {number} len 長さ
* @param {function} generateRandomInt 指定範囲のランダム整数の生成
*/
function generateRandomString(s, len, generateRandomInt) {
var a = [];
for (var i = 0; i < len; i++) {
a.push(s.codePointAt(generateRandomInt(0, s.length - 1)));
}
return a.join(''); // JavaScript での文字列結合の簡便な方法
}
関連
乱数
シャッフル
参考
https://stackoverflow.com/questions/41107/how-to-generate-a-random-alpha-numeric-string
Java の場合
https://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript
JavaScript の場合
ランダムなパスワードを1行で生成する https://qiita.com/suin/items/c958bcca90262467f2c0
言語別!ランダムな文字列の生成方法をまとめてみたよ。 https://www.agent-grow.com/self20percent/2018/07/02/random-text-gen/