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

FuelPHPのPaginationクラスについて
入門Redmine 第5版を読んだよ
FuelPHP の ORM\Model での find(‘all’) について
[Laravel5] Query Builder を使った時にどんなSQLになるのか知りたい

No Image

folder Amazon

Fire TV Stickがキタ━(゚∀゚)━!!
Amazonでウィンターセール開催中(1/16まで)
AmazonでCyberMondayセール開催中[〜12/12]
more...

folder AWS

[9/15まで] AWS 無料クーポンプレゼント実施中
[8/25まで] AWS 無料クーポンプレゼント実施中
t2.nanoインスタンスを調べてみた
more...

sponsored link

folder CentOS

No Image

No Image

No Image

more...

folder FreeBSD

No Image

No Image

No Image

more...

folder git

[git] tigのインストール

No Image

No Image

more...

folder JavaScript

No Image

No Image

more...

folder JAWS-UG

JAWS-UG Shimane vol.5やります

No Image

more...

folder kindle

まだあった、ImpressのKindle本50%オフセール(2/23まで)
翔泳社のKindle本が50%オフセール中(2/22まで)
Kindle本50%ポイント還元フェア(1/22まで)
more...

folder MySQL

No Image

No Image

No Image

more...

folder PHP

[Laravel5] Query Builder を使った時にどんなSQLになるのか知りたい
[FuelPHP] 配列の値を入れ替える
[FuelPHP] Arr::get() が便利すぎる
more...

folder Ruby

入門Redmine 第5版を読んだよ
RubyWorldConference2016の参加券が届いたよ
Redmine 3.2.1でチケットのコピーができなくなった(追記あり:2016-06-30)
more...

folder ShellCommand

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

No Image

more...

folder subversion

No Image

No Image

No Image

more...

folder WordPress

マテリアル2にチェンジ
EWWW Image Optimizerで画像をスリムにしよう
WordPressの記事を Markdown記法 で書く
more...

folder モノ

今年買ったペンを比べてみたよ
セリアのフリーノートを買ってみた
more...

folder 未分類

Withingsのスマート体重計Body Cardio開封の儀
格安SSL証明書 CoreSSL を設定してみた【スクリーンショット多数】
StartSSLで発行した証明書がFirefox51で使えなくなった[追記: Chromeも]
more...