- ベストアンサー
ランダムな英数字を発生させてたいのですが
Perl5をつかっています。 毎回ランダムな英数字の何桁かの文字列を発生させるCGIを作りたいのですが可能なのでしょうか? rand関数をつかうと乱数を発生はできるのはわかるのですが英文字ではないようなので困っています。 どなたかご教授おねがいします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#まず配列を用意 @mozi=('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0'); $max=@mozi;#配列の個数を代入 $get=int(rand($max));#個数までの乱数を取得 print"$mozi[$get]";#配列から引き抜き
その他の回答 (2)
- steel_gray
- ベストアンサー率66% (1052/1578)
以前、そんなサブルーチンを作ったので。 方法としては#1さんの1番の方法を使っています。 &randstr(8); で8桁のランダムな文字列を、 &randstr(4,16);で4桁~16桁のランダムな文字列を返します。 sub randstr { my ($colum1,$colum2) = @_; $colum2 = $colum1 unless($colum2); my @str = ('a'..'z','A'..'Z','0'..'9'); my $result; my $colum = int rand($colum2 - $colum1 +1) + $colum1; for(1..$colum) { $result .= $str[ int rand(scalar @str) ]; } return $result; }
- wakame0729
- ベストアンサー率32% (245/765)
1.使用する文字を1文字づつ配列に入れておき、ランダムで取得した数値をキーにして文字を取得する 2.ord関数で英数文字のasciiコードを得て、それにランダム値を加算し、chr関数で文字にする こんな方法で可能かと思います。
お礼
返事が遅くなりました。 ありがとうございます。 試してみます。
お礼
さらに詳しい説明ありがとうございます。 非常にわかりやすいです。