Как я могу генерировать псевдослучайные «читаемые» строки в Java? - PullRequest
13 голосов
/ 20 августа 2009

Создание действительно случайной строки заданной длины - довольно простая (и уже хорошо освещенная) задача.

Тем не менее, Я хотел бы сгенерировать «псевдо» случайную строку с дополнительным ограничением, чтобы она была относительно легко читаемой (для читателя на нативном английском).

Я думаю, что другой способ сказать это - сказать, что сгенерированная строка должна состоять из «узнаваемых слогов». Например, «akdjfwv» - это случайная строка, но она вообще не распознается. "Flamyom"; однако, это очень «узнаваемо» (хотя это чепуха.)

Очевидно, что можно составить длинный список «узнаваемых слогов», а затем случайным образом выбрать их.

Но есть ли лучший способ сделать что-то вроде программно сгенерировать «узнаваемый слог» или сгенерировать «слог», а затем проверить его, чтобы увидеть, «распознаваемо ли»?

Я могу придумать несколько способов реализации этой реализации, но если кто-то уже реализовал ее (желательно в Java или C #), я бы предпочел повторно использовать их работу.

Есть идеи?

Ответы [ 8 ]

17 голосов
/ 20 августа 2009

Вы можете попробовать реализовать цепочку Маркова и дать ей подходящий проход для обработки. Существует реализация Java , которая может работать для вас.

Это пример интерполяции между Бытие на английском и Бытие на испанском (N = 1):

В Берсаране, в основном, и во всем, что касается его жизни, он решил, что не может быть мамы. лллар т лэнд фингжод горничная аф де тандамоиз фосу андесп. ersunen thenas lowhejod whipanirede tifinas Gofuavithila d gi Y Y Diche fua Dios co lliens Y y crdíquen ticuesereregos hielase agúnd veumarbas iarasens laragún co eruerá laciéluelamagúneren Dien a He.

7 голосов
/ 20 августа 2009

Я думаю, что это должно делать то, что вы хотите:

Генератор паролей Java

Он имеет исходный код и разрешительную лицензию, поэтому вы можете адаптировать исходный код к тому, что вы ищете.

5 голосов
/ 20 августа 2009

Вам нужно генерировать случайные слоги. Самый простой способ сделать это состоит в том, чтобы использовать слоги, которые согласные гласные или согласные гласные согласные. Из списка согласных и гласных выберите случайным образом, чтобы построить слоги, затем соедините слоги вместе, чтобы сделать строку.

Имейте в виду, что ваш список согласных должен состоять не из согласных букв, а из фонем, поэтому "th", "st", "sl" и т. Д. Могут быть записями в списке согласных.

2 голосов
/ 20 августа 2009

Вы действительно должны проверить SCIgen . Он генерирует полусмысленные научные статьи: http://pdos.csail.mit.edu/scigen/

И источник доступен: он выпущен под лицензией GPL и в настоящее время доступен через анонимный CVS.

1 голос
/ 20 августа 2009

Много Lorem Ipsum генераторов там.

1 голос
/ 20 августа 2009

Есть хороший раздел по этому вопросу в Programming Pearls . Это онлайн, но я настоятельно рекомендую купить книгу; На мой взгляд, одна из лучших книг по программированию.

1 голос
/ 20 августа 2009

Я не совсем уверен, для чего вам это нужно, но если разработчики графического дизайна в полиграфической промышленности использовали генераторы Lorem Ipsum для создания текста, достаточно похожего на текст, чтобы ваш мозг обрабатывал его как таковой, фактически не читая слова , Подробнее здесь

Я не знаю, есть ли веб-сервис, на который вы могли бы подписаться, но есть несколько сайтов, которые просто сгенерируют для вас строки Lorem Ipsum, так что вы можете использовать их.

0 голосов
/ 20 августа 2009

Все возвращается к тому, почему вы этого хотите. Если вы просто хотите «произносимого тарабарщины», я думаю, что проще всего было бы генерировать чередующиеся согласные и гласные. Это было бы крошечным подмножеством произносимого тарабарщины, но какова цель? Чтобы дать немного более широкий диапазон, вы можете создать таблицу согласных фонем и гласных фонем, в которой список согласных включает не только отдельные буквы, такие как «b» и «d», но также «th», «br» и т. Д. список гласных может включать «oo» и «ea» и т. д. Еще одним шагом будет создание слогов вместо букв, при этом слог будет содержать либо гласную, либо согласную, либо гласную, либо согласную. То есть, переберите создание слогов, затем в слогах выберите один из трех шаблонов. Вы, вероятно, хотите запретить два гласных слога подряд. (Я пытаюсь придумать пример этого на английском языке. Это, вероятно, происходит, но единственные примеры, которые я могу придумать, заимствованы из других языков, например, «stoa».)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...