tamulab.jp

tamulabはプログラミングのtipsやインターネット上で気になったことなどを書いてます

ランダムな文字列を生成する方法

calendar

reload

ランダムな文字列を生成する方法

パスワードとかに使えそうなランダムな文字列を生成する方法です。とりあえずよく使う perl, php, ruby で同じことをやるのを書いてみました。
使う文字種はアルファベットの小文字、大文字と数字だけの62文字です。本来なら ! や $,% とかの記号も含めたほうがより強固なものになると思います。

流れとしては

  1. 上記の62文字を含む配列を作って
  2. 配列内からランダムな1文字を取得して連結していき
  3. 指定された文字長になったらその文字列を返す

というものです。
それぞれの言語での実装は以下のとおりです。

スポンサーリンク

Contents

perl

スポンサーリンク

php

ruby

ruby の場合は0-9の配列を作成するときに数字としての配列を作成していると、
文字を連結するときに .to_s メソッドで文字列として連結してやらないと文字列に数字を足そうとして次のようなエラーが起こることがあります。
`+': can't convert Fixnum into String (TypeError)

回避方法は上記のように .to_s を使うか、(0..9).to_a を (‘0’..’9′).to_a として文字の配列にしておくかです。
それぞれのやり方で配列を生成したのを比べるとわかると思います。

それと、各言語別にランダム関数の挙動が異なります。
指定された最大値を含む値を返す => php
指定された最大値を含まない値を返す => perl, ruby
php の場合は mt_rand(0, 10) とすると 0以上10以下(10を含む) の数値を返しますが、
perl, ruby の rand(10) だと 0以上10未満(10を含まない) の数値を返すようです。

この記事をシェアする

関連記事

No Image

RubyWorldConference2016の参加券が届いたよ
t2.nanoインスタンスでWordPressサイト作って ab してみた

No Image

about

Toru TAMURA

Toru TAMURA

PHP, Ruby などをあやつるWebエンジニアです。Amazon Web Service(AWS)のユーザーグループ JAWS-UG 島根支部所属 [詳細]