• 締切済み

ランダム文字列の生成の仕方

こんばんは。 はじめまして。 JAVAでランダムの文字列を生成する時に何か便利な機能はあるのでしょうか? CGIでは確かあったはずなんですが、 自分なりに探してみたのですがわかりませんでした。 今の自分の考えでは、ランダムで数字は生成できるので それをChar型を使って文字コードで一文字取得して、それを連結するのかな? なんて考えています。 もっといい方法があればできればご教授ください。 よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • bassslap
  • ベストアンサー率50% (1/2)
回答No.1

私も乱数を生成してから文字列に置き換えるくらいしか思いつきません。 望んだ回答ではないかもしれませんが Javaのjava.langパッケージを拡張するライブラリであるcommons-langを 使用すれば比較的容易に生成できそうです。 参考のURLを載せておきます。

参考URL:
http://d.hatena.ne.jp/GARAPON/20090224/1235460950

関連するQ&A

  • アルファベットを含むランダムな文字列を生成するには?

    通常の数字を用いた乱数を発生させるには OrderNo + Int(17 * Second(Time) * Rnd) :OrderNoはDB上にある注文番号の最終レコード値です という感じで、とりあえず適当にランダムな値を自動で生成させることができるのですが、 アルファベットなどの文字を含む場合のランダムな文字列の生成はどのようにすればよいのでしょうか? 感じできには、 UkB1PgMJ zK22fw2W N1np8zDb DbetjqKq Cj58pfYm というものです。 例は、小文字の[i][l][o]と大文字の[I][L][O]と数字の[0]を含まないランダムな文字列を8桁で生成しています。 (使用したソフトは、Fapsis氏のPassword Creator TypeB Ver3.5です) 具体的には何か関数で、このような文字列をランダムに発生させるものがあるのでしょうか?

  • パラメータをランダム文字列で表わしたい

    某サイトでリンクをクリックすると、下記のようにランダム文字列がパラメータとして渡されるものがあります。 http://www.foobar.jp/cgi-bin/abcd.cgi?a=10004414&b=PMird395j ランダム関数で生成?もしくは暗号化?しているのではないかと思うのですが、例えば商品番号などをそのままの数値でなく暗号化することができれば、セキュリティの向上にもつながるのではないかと思います。 このような文字列をPHPで簡単に生成する方法には、どのようなものがあるでしょうか。もちろん、文字列から元のIDや番号を復元できなければなりません。暗号化を使うのが良いのでしょうか。

    • ベストアンサー
    • PHP
  • ランダム文字列

    srand; @array = a .. z; @new; while ( @array ) { push( @new, splice(@array , rand @array , 1) ); } print @new, "\n\n"; print "<br>"; print @new, "\n\n"; print "<br>"; print @new, "\n\n"; ↑のような感じでランダム文字列の作成を考えています。 上記スクリプトですと、 aewpodigtusnkjycfxvmzqrlhb aewpodigtusnkjycfxvmzqrlhb aewpodigtusnkjycfxvmzqrlhb ↑のようにどの行も同一文字列になってしまいます。これを、行毎に異なった8文字のランダム文字列にしたいのですが、方法がわかりません。 いっぺんに100行のランダム文字列を生成する必要があります。どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ユニークな文字列を順次, 生成する関数

    C++において, 適当な文字列を元に, ユニークな文字列を順次, 生成する関数を作りたいと思っています. (LISPで云う, 関数gensym()と似た役割を持つ関数です.) 例えば, "hoge"というstringを元に, "hoge0", "hoge1", "hoge4", "hoge8", "hoge100", ...., といったように, stringが互いに重複しないように, 適当な数字を連結した文字列を順次生成したいのです. 以下のように, 私なりの方法を考えてみたのですが, これだと, 今まで生成したstringを保存するhoge_setが必要になります. 何かより良い(シンプル, 効率的な)方法がありましたら, 教えていただけますでしょうか? よろしくお願い致します. (乱数を用いた方法) 1. 元となるstring型の変数nameを, "hoge" で初期化. 既に作成したstring文字列を保存する, set < string > hoge_setを宣言. 2. 乱数を生成し, それをnameにappendしたものを, string型の変数name2に代入. 3. 同じ文字列が存在したら, 2. に戻る. 同じ文字列が存在しなかったら, hoge_setに追加する.

  • ランダムなアルファベットの文字列を覚える方法

    ランダムな数字の文字列を覚える方法だったら、 ネットで検索すれば、たくさん出てきますが、 ランダムなアルファベットの文字列を覚える方法は、 ネットで検索しても、出て来ない気がします。 ランダムなアルファベットの文字列を覚える方法は、 何か、ありませんか? そして、こういうことを、調べるには、 ネットで、どういうキーワードで、検索すれば、いいですか? 但し、英単語を覚えたいわけでは、ありません。 あくまでも、ランダムな文字列を、覚えたいのです。

  • CGIで生成したランダムな文字列を、ユニークなカラムにINSERTする方法は?

    多重アクセスの問題です。 現在は、↓のようにしております。 (1) まず初めに、ランダムな文字列(例えば、「ptB0RzT8jtERPH8z」)を、CGIで生成します。 (2) その「ptB0RzT8jtERPH8z」をユニークなカラムにINSERTするのですが、   既に、「ptB0RzT8jtERPH8z」があると、DBエラーになりますので、   SELECTして、「ptB0RzT8jtERPH8z」がないかどうかをチェックします。 (3) あれば(1)に戻って、ランダム文字列を再生成、   なければ、INSERTします。 しかしこの場合、(2)でSELECTして、(3)でINSERTする間に、 別のユーザーが、「ptB0RzT8jtERPH8z」をINSERTすれば、 (3)で、DBエラーを起こします。 どのようにすれば、解決できるでしょうか? ちなみに、DBはMySQL5です。 エラったらdieせずに、rollbackすれば?との意見もあるかもしれませんが、 DBIコネクト時に、RaiseErrorをオンにしています。

    • ベストアンサー
    • Perl
  • 文字列を分解したいのですが・・・

    VC++初心者です。 ある文字列(数値、数値、数値CRLF数値、数値・・・)のような中からコンマで区切られた数字を取り出したいのですがうまくいきません。 とりあえずはコンマと改行コードの位置だけでも探したいのですがどうやったら良いでしょうか?お知恵を貸してください。 char buffer[64] = 10.52,5.88,4.37(改行コード)6.42,41.91; char* result; int ch1 = "CRLF"; result = strchr(buffer,ch1); int ch2 = "," result = strchr(buffer,ch2); 改行コードは最初の文字列に入ってるはずですが見えないので(改行コード)と入力しました。 よろしくお願いいたします。

  • ランダムな文字列を生成しその文字列をメール送信したいのですが・・・

    ランダムな文字列を生成し、その文字列をURLに組み込み、 そのURL自体をメール送信したいのですが、どうもうまく行きません。 恐らく初歩的な間違いをしているのだとは思いますが、 PHP 初心者ですのでどこがどう間違っているのか全くわかりません。 今やろうとしている事は ( 下記プログラム参照↓ ) 生成したランダムな文字列を $randam に代入し、 $randam を URL の中に取り込んで、これを $url に代入。 さらにこの $url をメール本文としてメール送信したいのですが うまく行きません。 どなたかアドバイス頂けませんでしょうか? 宜しくお願い致します。 今、作成している内容は以下の通りです。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ## ランダムURLを生成 開始 ↓ -------------------------------------------- # * マイクロ秒により乱数器に種まき */ function make_seed() { list($usec, $sec) = explode(' ', microtime()); mt_srand((float) $sec + ((float) $usec * 100000)); } /** * パスワードを生成する * @param int $len パスワードの長さ * @param string $str パスワードに使う文字の並び * @return string パスワード */ function make_password($len, $str) { $l = strlen($str) - 1; $psw = ""; for ($i = 0; $i < $len; $i++) { $n = (int)mt_rand(0, $l); $psw = $psw . substr($str, $n, 1); //1文字追加 } return $psw; } $randam = make_password(10, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"); $url = "http://●●●●●.com/$randam.html"; ## ランダムにURLを生成 終了 ↑ ------------------------------------ # ## 設定項目 開始 ↓ -------------------------------------------- # $mTo = $_POST[mail]; $user_id = $_POST[usr]; $password = $_POST[pass]; ## メールの件名 $mSub = 'Test Program'; ## メール本文 $mMes = '↓お申し込みの内容は以下の通りです。 '.$mTo.' '.$user_id.' '.$password.' '.$url.' ## 送信元アドレス $mFrom = 'mail@●●●●●.com'; ## 設定項目 終了 ↑ -------------------------------------------- # if (empty($mTo)) : ?> <?php else : $mFrom = "From: ".$mFrom."\nX-Mailer: PHP"; mail ($mTo, $mSub, $mMes, $mFrom); ?>

    • 締切済み
    • PHP
  • 小文字、大文字、記号をランダム表示

    このプログラムは英大文字をランダムに表示するプログラムなのですが、これを小文字と記号も合わさった形で出力されるように改造するにはどうしたらいいでしょうか。コードを添えて下さると助かります。 import java.util.Random; public class Aruf{ public static void main(String[] args) { //Randomクラスのインスタンス化 Random rnd = new Random(); //変数の宣言 int ran; int a; char c; //10回繰り返す for(int b=0;b<10;b++){ //0~25の乱数を作成 ran = rnd.nextInt(26); //65を足して65~90にする a = 65 + ran; //charに型変換 c = (char)a; //表示 System.out.print(c); } } }

    • ベストアンサー
    • Java
  • ランダム文字列をDBにINSERT

    はじめまして。お世話になります。 LAMPでWEBシステムを作成しております。 ランダムな文字列をDBにINSERTする処理に関して質問させて頂きます。 条件: ・DBに入るランダムな文字列は重複不可。 ・ランダムな文字列は[a-zA-Z0-9]の10桁とする。 ・1度の処理で、ランダムの文字列は確実にINSERTさせる。 ・同時に多数の処理が走ることがある。 ・処理は速いに越したことない(DBの負荷も低めがよい) 環境: PHP 4.4.4 Mysql 5.0.33 使用ストレージエンジン:MyIsam 私が思いついたのが以下の2通りです。 (1) ランダム文字列が入るカラムをユニークキーとし、PHP側で作成されたランダム文字列をINSERT。 重複していたらエラーが返ってくるが、正常にINSERTされるまでPHP側でループ。 (2) 対象テーブルをロックし、PHP側で作成されたランダムの文字列をSELECT。 なければその文字列をINSERTし、テーブルロック解除 (1)はループが少し怖く、(2)はDBへの負荷がかかってしまいそうですが どちらがよいでしょうか? もしくは、他に何か方法があればご教授頂けるとありがたいです。 また、現在MyIsamを使用しておりますが、場合によってはストレージエンジンの変更も 考えておりますのでその点も考慮して頂けると幸いです。 ちなみに検索条件は、ランダムの文字列をキーに全てのデータを取得するくらいです。 そのテーブルは、カラム数15、レコード数1,000万の見込みです。 以上、長くなりましたがよろしくお願いします。

    • ベストアンサー
    • PHP