Meteor には Random
という文字列をランダム生成するのに便利な機能をもっているグローバルなオブジェクトが標準で用意されています(正確には random パッケージという形で提供されています)。
この記事では Random
オブジェクトを用いた、文字列のランダム生成方法を紹介します。
なお Random
オブジェクトはクライアント側、サーバー側両方で使用可能です。
Random
文字列をランダム生成する: Random.id()
Random.id()
メソッドでランダムな文字列を生成することができます。
生成される文字列は UNMISTAKABLE_CHARS(間違えにくい文字) のみで構成されています。
// var UNMISTAKABLE_CHARS = "23456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijkmnopqrstuvwxyz";
Random.id();
//=> "mCAqfaKvP6s27g3bM"
Random.id();
//=> "iYwqBbQrKR9LonHtX"
ちなみに、Random.id()
メソッドよりもランダム生成で使用される文字が少し多い Random.secret()
というメソッドもあります。
// var BASE64_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
Random.secret();
//=> "H3HgyJzJjAccID6u1B19zrxtH6IIyYS0uxhYlZ5dDdr"
Random.secret();
//=> "M1BgpY6bIVK10jvN1BV47PMYn_aatKA0qGzn5H0TIv3"
バイト数を指定して文字列をランダム生成する: Random.id(bytesize)
Random.id()
メソッドの引数にバイト数を渡すと、その数だけランダムな文字列を生成してくれます。
Random.id(40);
//=> "TjpDEMnkx2zfiwMDyGff4iwBtTTGhwmb2BymdYod"
Random.id(40);
//=> "bdkorCFSqZKLXEkGiu2xkDBmqH46ewahpBpDydxp"
シードを指定して文字列をランダム生成する: Random.createWithSeeds(seed).id()
ランダム生成の種(シード)となる文字列を Random.createWithSeeds()
メソッドの引数に渡すことで、シードが同一であれば、毎回同じ文字列を生成できるようになります。
Random.createWithSeeds("foo").id();
//=> "X4NSQq6HHL7X2yCF6"
Random.createWithSeeds("foo").id();
//=> "X4NSQq6HHL7X2yCF6" // シードが同一だと生成される文字列は毎回同じ
Random.createWithSeeds("bar").id();
//=> "zjKxYyFWnXJ3uyPJ4" // シードが異なると生成される文字列は変わる
Random.createWithSeeds("bar").id();
//=> "zjKxYyFWnXJ3uyPJ4"
もちろん、Random.id()
メソッドの引数にバイト数を指定することも可能です。
Random.createWithSeeds("foo").id(40);
//=> "X4NSQq6HHL7X2yCF6DEQ2wvNJBHLwxkSKSyfcEiv"
Random.createWithSeeds("foo").id(40);
//=> "X4NSQq6HHL7X2yCF6DEQ2wvNJBHLwxkSKSyfcEiv"
16進数文字列をランダム生成する: Random.hexString(digits)
Random.hexString(digits)
メソッドは16進数で使用される文字(0123456789abcdef)だけで構成されたランダム文字列を生成します。引数の digits には生成する16進数文字列の桁数を与える必要があります。引数がない場合は、空文字列が返ってきます。
Random.hexString(20);
//=> "0d86e920ff41b08fa076"
Random.hexString(20);
//=> "e102054eb42c0aa24e6f"
Random.hexString();
//=> "" // 引数を与えない場合は空文字列
[番外編] 0から1の間の数値のランダム生成する: Random.fraction()
Random.fraction()
メソッドを使用すると、0から1の間の数値をランダム生成することができます。
Random.fraction();
//=> 0.8381050589960068
Random.fraction();
//=> 0.5434659260790795
[番外編2] 文字列または配列から要素を1つだけランダムに取り出す: Random.choice(stringOrArray)
Random.choice(stringOrArray)
メソッドを使用すると、文字列または配列から要素を1つだけとりだすことができます。
Random.choice("abcdefg");
//=> "c"
Random.choice("abcdefg");
//=> "f"
Random.choice([1,2,3,4,5,6,7,8,9,10]);
//=> 6
Random.choice([1,2,3,4,5,6,7,8,9,10]);
//=> 10
よい Meteor ライフを!
参考
- random package - https://github.com/meteor/meteor/tree/master/packages/random