c# - how - ¿Cómo puedo generar cadenas pseudoaleatorias "legibles" en Java?
random string c# ejemplo (8)
Creo que esto debería hacer lo que quieras:
Tiene el código fuente y una licencia permisiva para que pueda adaptar el código fuente a lo que está buscando.
Generar una cadena verdaderamente aleatoria de una determinada longitud es una tarea bastante sencilla (y ya bien cubierta).
Sin embargo; Me gustaría generar una cadena aleatoria "pseudo" con la restricción adicional de que sea relativamente fácil de leer (para un lector de inglés nativo).
Creo que otra forma de decir esto es decir que la cadena generada debe consistir en "sílabas reconocibles". Por ejemplo, "akdjfwv" es una cadena aleatoria, pero no es reconocible en absoluto. "flamyom"; sin embargo, es muy "reconocible" (aunque no tenga sentido).
Obviamente, uno podría hacer una larga lista de "sílabas reconocibles" y luego seleccionarlas al azar.
Pero, ¿hay una mejor manera de hacer algo como generar programáticamente una "sílaba reconocible", o generar una "sílaba" y luego probarla para ver si es "reconocible"?
Puedo pensar en varias formas de llevar a cabo esta implementación, pero si alguien ya lo ha implementado (preferiblemente en Java o C #), preferiría volver a utilizar su trabajo.
¿Algunas ideas?
Deberías echarle un vistazo a SCIgen . Genera artículos científicos completos sin sentido: http://pdos.csail.mit.edu/scigen/
Y la fuente está disponible: se lanzó bajo GPL y actualmente está disponible a través de CVS anónimo.
Hay una buena sección sobre esto en Programming Pearls . Está en línea, pero recomiendo comprar el libro; Uno de los mejores libros de programación en mi opinión.
Muchos generadores de Lorem Ipsum .
Necesitas generar sílabas aleatorias. La forma más simple de hacerlo es usar sílabas que son consonante-vocal, o consonante-vocal-consonante. De una lista de consonantes y vocales, elige al azar para construir sílabas, luego une las sílabas para formar una cuerda.
Tenga en cuenta que su lista de consonantes no debe ser letras que son consonantes, sino fonemas, por lo que "th", "st", "sl", etc., podrían ser entradas en la lista de consonantes.
No estoy seguro de exactamente para qué necesita esto, pero si la gente gráfica-layot en la industria de la impresión ha usado generadores Lorem Ipsum para crear texto que se parece lo suficiente al texto, su cerebro lo procesa como tal sin que realmente sean palabras legibles. Más información aquí
No sé si hay un servicio web al que pueda suscribirse, pero hay varios sitios que generarán cadenas Lorem Ipsum por usted, por lo que puede usarlos.
Puedes intentar implementar una cadena de Markov y darle un pasaje adecuado para procesar. Existe una implementación de Java que puede funcionar para usted.
Esta es una muestra de la interpolación entre Génesis en inglés y Génesis en español (N = 1):
En bersaran thelely y avin in the teathe m lovig wewow waw thof m ein the th fupiteg sot llissed od ma. lllar t land fingujod doncella af de wand tetodamoiz fosu Andesp. ersunen thenas lowhejod whipanirede tifinas Gofuavithila d gió Y Diche fua Dios co l, liens ly Y crerdíquen ticuesereregos hielase agúnd veumarbas iarasens laragún co eruerá laciéluelamagúneren Dien a He.
Todo regresa a por qué quieres esto. Si solo quieres un "galimatías pronunciable", creo que lo más fácil sería generar consonantes y vocales alternas. Eso sería un pequeño subconjunto de todo galimatías pronunciable, pero ¿cuál es el objetivo? Para dar un rango un poco más amplio, podría crear una tabla de fonemas consonánticos y fonemas vocálicos, con la lista de consonantes que incluye no solo letras individuales como "b" y "d", sino también "th", "br", y así sucesivamente, y la lista de vocales podría incluir "oo" y "ea", etc. Un paso más sería generar sílabas en lugar de letras, con una sílaba que contenga vocal, consonante-vocal o consonante-vocal-consonante. Es decir, crear las sílabas, luego dentro de las sílabas elegir uno de los tres patrones. Probablemente quieras prohibir dos sílabas con vocales en una fila. (Estoy intentando pensar en un ejemplo de eso en inglés. Probablemente suceda, pero los únicos ejemplos que puedo pensar están tomados de otros idiomas, como "stoa").