2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Meteorで文字列をランダム生成する(Random)

Last updated at Posted at 2015-08-20

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 ライフを!

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?