JavaScriptで指定した長さのランダムな文字列を生成する方法
本記事では、数値を1つだけ引数として受け取り、その引数で指定された長さのランダムな文字列を生成して返すJavaScript関数の実装方法を解説します。
文字列の生成に使用する文字セットは、大文字と小文字のアルファベットのみとします(空白記号、句読点、数字は含みません)。
実装のポイント
ランダムな文字列を生成する際の基本的な流れは以下の通りです。
- 使用する文字セットとして、大文字・小文字あわせて52種類のアルファベットを定義する
Math.random()で0以上1未満の乱数を取得し、文字セットの長さを掛けることでインデックス候補を算出するMath.floor()で小数点以下を切り捨て、整数のインデックスに変換する- 指定された長さに達するまでこの処理を繰り返し、文字を順次連結していく
コード例
const num = 13;
const randomString = (len = 1) => {
const charSet =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
let randomString = '';
for (let i = 0; i < len; i++) {
let randomPoz = Math.floor(Math.random() * charSet.length);
randomString += charSet.substring(randomPoz, randomPoz + 1);
}
return randomString;
};
console.log(randomString(num));
出力結果
コンソールには次のように表示されます。
EqprjcudAhmVg
乱数を用いて文字を選択しているため、実行するたびに出力結果は変わります。同じ長さでも毎回異なる文字列が得られることを確認してください。
補足:より安全性の高い乱数が必要な場合
Math.random()は擬似乱数ジェネレーターであり、暗号学的な安全性は保証されていません。パスワードの一時発行やトークン生成など、セキュリティが求められる用途では crypto.getRandomValues() を使う方法が推奨されます。
const secureRandomString = (len = 1) => {
const charSet =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
const values = new Uint32Array(len);
crypto.getRandomValues(values);
return Array.from(values, v => charSet[v % charSet.length]).join('');
};
console.log(secureRandomString(num));
用途に応じて適切な乱数生成手段を選択することで、より信頼性の高い実装が可能になります。
-
MySQLで特定の長さの文字列フィールドを検索する方法|char_length()とlength()の使い分け
MySQLで特定の長さを持つ文字列フィールドを検索するには、char_length()関数またはlength()関数を使用します。この記事では、それぞれの関数の違いと具体的な使い方を実例とともにわかりやすく解説します。 構文 ケース1:char_length()を使う場合 char_length()は、文字列の長さを文字数で評価したい場合に使用します。 select *from yourTableName where char_length(yourColumnName)=anySpecificLengthValue; ケース2:length()を使う場合 length()は、文字列の長さをバ
-
PHPでランダム文字列を生成する方法【初心者向けサンプルコード付き】
PHPでランダムな文字列を生成するには、いくつかの方法があります。本記事では、md5() 関数と mt_rand() 関数を組み合わせたシンプルな手法と、PHP 7以降で利用できる暗号学的に安全な random_bytes() 関数を使った方法を、サンプルコードと実行結果とともに解説します。 例1:md5() と mt_rand() を組み合わせる方法 mt_rand() で生成した乱数を md5() でハッシュ化し、substr() で先頭5文字を切り出すことで、ランダムな文字列を作成します。 <?php $res = substr(md5(mt_rand()