2009-08-20 12 views
12

与えられた長さの本当にランダムな文字列を生成することは、かなり簡単な(そして既によくカバーされている)タスクです。Javaで擬似ランダム "可読"文字列を生成するにはどうすればよいですか?

ただし、私は、比較的簡単に読むことができるという追加の制約を持つ "擬似"ランダムな文字列を生成したいと思っています。(英語のネイティブリーダーに)

私はこれを言うには、 「認識可能な音節」で構成されています。たとえば、 "akdjfwv"はランダムな文字列ですが、認識できません。 "flamyom";しかし、それはナンセンスであっても非常に「認識可能」である。

明らかに、「認識可能な音節」の長いリストを作成してランダムに選択することができます。

しかし、「認識可能な音節」をプログラムで生成したり、「音節」を生成して「認識可能」であるかどうかをテストするなどの方法がありますか?

私はこの実装に関していくつかの方法を考えることができますが、誰かがすでにそれを実装している場合(JavaまたはC#であることが好ましい)、私はむしろそれらの作業を再利用したいと思います。

アイデア?

答えて

6

私は、これはあなたが望む何をすべきだと思う:

Java Password Generator

あなたが探しているものにソースコードを適応させることができますので、それは、ソースコードや許可ライセンスを持っています。

+0

これは素晴らしい文字列を生成します。これは、(シーケンシャルロングの生成とは対照的に)かなり高いパフォーマンスのコストで行われます。 – Jared

17

Markov chainを実装して、適切な処理を行うことができます。あなたのために働くかもしれないJava implementationがあります。

これはスペイン語、英語とジェネシスでジェネシス(N = 1)の間を補間からのサンプルである:bersaranで

thelelyとAVINインダーTHT teathe M lovig weay WAW THOD mofin彼T thte時間fupitegのSOT笑った。アンデスプス、テダダモイズ・フォス・アンド・ワンドそれから、あなたの仲間は、あなたの仲間と一緒に仲間と一緒に暮らしていきます。あなたは仲間と一緒に暮らしていて、仲間と一緒に仲間と一緒に暮らしています。

+0

マルコフ連鎖、しかし私は+1することができます...;) –

+0

@アレックス、ありがとう。あなたが好きな私の別の答えの投票に行くことができます(もしあれば) –

+2

それはポイントシステムの意思を揺さぶるだろう –

5

ランダムな音節を生成する必要があります。これを行う最も簡単な方法は、子音 - 母音または子音 - 母音 - 子音である音節を使用することです。子音と母音のリストから無作為に選択して音節を作成し、音節を結合して文字列を作成します。

子音のリストは子音ではなく、音素である必要がありますので、 "th"、 "st"、 "sl"などは子音リストに入力できます。

1

あなたは本当にチェックアウトする必要がありますSCIgenhttp://pdos.csail.mit.edu/scigen/

ソースは入手可能です:GPLで公開されており、現在は匿名CVSで入手できます。

1

私はあなたが必要とするものは正確にはわかりませんが、印刷業界のグラフィックレイオフの人々が、Lorem Ipsumジェネレータを使って、脳が実際に読むことなく言葉。詳細情報here

あなたが購読できるWebサービスがあるかどうかはわかりませんが、Lorem Ipsumの文字列を生成するサイトがいくつかありますので、それらを使用することができます。

1

Programming Pearlsにはこれに関する良いセクションがあります。オンラインですが、本を買うことを強くお勧めします。私の意見では、最高のプログラミング本の1つです。

0

Lorem Ipsum多くのジェネレータがあります。

0

すべては、なぜこれをしたいのかに戻る。 「発音可能な言葉遣い」をほしいと思っているのなら、最も簡単なことは、子音と母音を交互に生成することだと思います。それはすべての言葉ばかりの冗談の小さなサブセットですが、目標は何ですか?少し広い範囲を与えるために、 "b"と "d"のような個々の文字だけでなく "th"、 "br"などの子音リストを含む子音の音素と母音の表を作成することができます。母音リストには「oo」や「ea」などが含まれています。もう一つのステップは、母音、子音母音、子音母音子音のいずれかを含む音節で、文字の代わりに音節を生成することです。つまり、音節を作成してループし、音節内で3つのパターンのうちの1つを選択します。おそらく2つの母音のみの音節を連続して禁じたいと思うでしょう。 (私はその英語の例を英語で考えようとしていますが、おそらく起こりますが、私が考えることができる唯一の例は "stoa"のような他の言語から借用しています)

関連する問題