【JavaScript】ランダム文字列/文字生成:ワンライナーからライブラリまで徹底解説
JavaScriptでランダムな文字列/文字を生成するには、いくつか方法があります。それぞれの特徴と使い分けを理解し、目的に合った方法を選択することが重要です。
方法
Math.random()と文字コード
- 最も基本的な方法
- ランダムな数値を生成し、それを文字コードに変換することでランダムな文字を取得
- 例:
function generateRandomCharacter() {
// 0から61までのランダムな数値を生成
const randomNumber = Math.floor(Math.random() * 62);
// ランダムな数値を文字コードに変換
const randomCharacter = String.fromCharCode(randomNumber + 33);
return randomCharacter;
}
// 例:ランダムな文字を出力
console.log(generateRandomCharacter()); // 例:"!"
String.fromCharCode()と文字列
- 特定の文字列からランダムな文字を取得
function generateRandomCharacterFromString(str) {
// 文字列の長さを取得
const length = str.length;
// ランダムなインデックスを生成
const randomIndex = Math.floor(Math.random() * length);
// ランダムなインデックスの文字を取得
const randomCharacter = str[randomIndex];
return randomCharacter;
}
// 例:ランダムな英数字を出力
const str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
console.log(generateRandomCharacterFromString(str)); // 例:"a"
function generateRandomCharacterFromString(str) {
// 文字列を配列に変換
const characters = str.split("");
// ランダムなインデックスを生成
const randomIndex = Math.floor(Math.random() * characters.length);
// ランダムなインデックスの文字を取得
const randomCharacter = characters[randomIndex];
return randomCharacter;
}
// 例:ランダムな英数字を出力
const str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
console.log(generateRandomCharacterFromString(str)); // 例:"a"
ライブラリの利用
- より複雑なランダム文字列生成に役立つ
// ライブラリのインストール
npm install --save random-string
// ライブラリの利用
const randomString = require("random-string");
// ランダムな10文字の英数字列を生成
const randomAlphaNumericString = randomString({
length: 10,
charset: "alphaNumeric",
});
// ランダムな10文字の英字列を生成
const randomAlphaString = randomString({
length: 10,
charset: "alphabetical",
});
// ランダムな10文字の数字列を生成
const randomNumberString = randomString({
length: 10,
charset: "numeric",
});
console.log(randomAlphaNumericString); // 例:"aB12cDe3F4"
console.log(randomAlphaString); // 例:"abcDeFgHi"
console.log(randomNumberString); // 例:"1234567890"
function generateRandomCharacter() {
// 0から61までのランダムな数値を生成
const randomNumber = Math.floor(Math.random() * 62);
// ランダムな数値を文字コードに変換
const randomCharacter = String.fromCharCode(randomNumber + 33);
return randomCharacter;
}
// 例:ランダムな文字を出力
console.log(generateRandomCharacter()); // 例:"!"
function generateRandomCharacterFromString(str) {
// 文字列の長さを取得
const length = str.length;
// ランダムなインデックスを生成
const randomIndex = Math.floor(Math.random() * length);
// ランダムなインデックスの文字を取得
const randomCharacter = str[randomIndex];
return randomCharacter;
}
// 例:ランダムな英数字を出力
const str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
console.log(generateRandomCharacterFromString(str)); // 例:"a"
function generateRandomCharacterFromString(str) {
// 文字列を配列に変換
const characters = str.split("");
// ランダムなインデックスを生成
const randomIndex = Math.floor(Math.random() * characters.length);
// ランダムなインデックスの文字を取得
const randomCharacter = characters[randomIndex];
return randomCharacter;
}
// 例:ランダムな英数字を出力
const str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
console.log(generateRandomCharacterFromString(str)); // 例:"a"
// ライブラリのインストール
npm install --save random-string
// ライブラリの利用
const randomString = require("random-string");
// ランダムな10文字の英数字列を生成
const randomAlphaNumericString = randomString({
length: 10,
charset: "alphaNumeric",
});
// ランダムな10文字の英字列を生成
const randomAlphaString = randomString({
length: 10,
charset: "alphabetical",
});
// ランダムな10文字の数字列を生成
const randomNumberString = randomString({
length: 10,
charset: "numeric",
});
console.log(randomAlphaNumericString); // 例:"aB12cDe3F4"
console.log(randomAlphaString); // 例:"abcDeFgHi"
console.log(randomNumberString); // 例:"1234567890"
JavaScriptでランダムな文字列/文字を生成するその他の方法
function generateRandomCharacter() {
// Uint8Array型のランダムな値を生成
const randomNumberArray = new Uint8Array(1);
crypto.getRandomValues(randomNumberArray);
// ランダムな数値を文字コードに変換
const randomNumber = randomNumberArray[0];
const randomCharacter = String.fromCharCode(randomNumber + 33);
return randomCharacter;
}
// 例:ランダムな文字を出力
console.log(generateRandomCharacter()); // 例:"!"
TypedArray.prototype.reduce()
- より簡潔なコードでランダムな文字列生成
function generateRandomCharacter() {
// Uint8Array型のランダムな値を生成
const randomNumberArray = new Uint8Array(1);
crypto.getRandomValues(randomNumberArray);
// ランダムな数値を文字コードに変換
const randomCharacter = randomNumberArray.reduce((acc, cur) => acc + String.fromCharCode(cur + 33), "");
return randomCharacter;
}
// 例:ランダムな文字を出力
console.log(generateRandomCharacter()); // 例:"!"
URLSearchParams
- URLパラメータの生成に役立つ
function generateRandomCharacter() {
// URLSearchParamsを作成
const params = new URLSearchParams();
// ランダムな文字列を追加
params.append("random", String.fromCharCode(Math.floor(Math.random() * 62) + 33));
// URLSearchParamsを文字列に変換
const randomCharacter = params.toString();
return randomCharacter;
}
// 例:ランダムな文字を出力
console.log(generateRandomCharacter()); // 例:"?random=!"
async function generateRandomCharacter() {
// SubtleCryptoオブジェクトを取得
const subtleCrypto = window.crypto.subtle;
// ランダムな値を生成
const randomBytes = await subtleCrypto.getRandomValues(new Uint8Array(1));
// ランダムな数値を文字コードに変換
const randomNumber = randomBytes[0];
const randomCharacter = String.fromCharCode(randomNumber + 33);
return randomCharacter;
}
// 例:ランダムな文字を出力
generateRandomCharacter().then((randomCharacter) => {
console.log(randomCharacter); // 例:"!"
});
javascript string random