Generar cadenas de texto aleatorio usando Random.

martes, 24 de abril de 2012
Hay ocasiones en las que debemos generar texto o nombres de forma aleatoria ya sea para renombrar archivos, o tal vez imágenes que nuestros usuarios suben al hosting, o simplemente identificar a un usuario o algún producto de nuestra base de datos, según sea el caso podemos aprovechar la librería Random que nos ofrece .Net, que si bien es para generar números aleatorios y nos ofrece diferentes sobrecargas o formas en las que podemos usarlo, nosotros lo utilizaremos para generar diferentes combinaciones de texto a partir de un texto dado.

Veamos un ejemplo:

Expliquemos un poco:
- Creamos la instancia del objeto Random.
- Definimos los posibles caracteres que incluirá cada nueva combinación obtenida.
- Obtenemos el numero de caracteres o la longitud de los posibles caracteres.
- Declaramos una nueva variable la cual contendrá la nueva combinación.
- Usamos el ciclo for para tomar el carácter según el método Next de la variable con los caracteres posibles y así ir obteniendo uno a la vez e ir concatenándole a la cadena de salida el nuevo carácter obtenido.
- Por ultimo obtenemos la nueva cadena y decidimos que hacer con ella.

Estos son ejemplos de combinaciones obtenidas:
FXyTq
rBNdR
9n1yR
Xe4JX
wQjnj

Esto es todo, espero que a alguien le sea de utilidad ;) .

19 comentarios:

  1. Me servio mucho tu ejemplo, muchas gracias.

    ResponderEliminar
  2. Mi lo que hice :D
    private void Aleatorio() {
    try
    {
    Random obj = new Random();
    String posibles = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
    int longitud = posibles.Length;
    char letra;
    char letra2;
    char letra3;
    char letra4;
    int longitudnuevacadena = 5;
    string nuevacadena = "";
    string nuevacadena2 = "";
    string nuevacadena3 = "";
    string nuevacadena4 = "";
    for (int i = 0; i < longitudnuevacadena; i++)
    {
    letra = posibles[obj.Next(longitud)];
    letra2 = posibles[obj.Next(longitud)];
    letra3 = posibles[obj.Next(longitud)];
    letra4 = posibles[obj.Next(longitud)];
    nuevacadena += letra.ToString();
    nuevacadena2 += letra2.ToString();
    nuevacadena3 += letra3.ToString();
    nuevacadena4 += letra4.ToString();
    }
    String General = nuevacadena + "-" + nuevacadena2 +"-"+ nuevacadena3 +"-"+ nuevacadena4;
    label1.Text = General;

    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message,"Error");

    ResponderEliminar
    Respuestas
    1. Funciona, que tal si fueran 30 letras o mas?

      Eliminar
    2. Discúlpame Donny pero es innecesario escribir todo eso repetido, lo único que tienes que hacer es cambiar el valor de la variable longitudnuevacadena=5 poner longitudnuevacadena=30 y asunto resuelto :D, la programación se trata de facilitar las cosas :p

      Eliminar
  3. Muy, pero muy bueno. Gracias

    ResponderEliminar
  4. using System;
    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    Console.WriteLine(randomstring(15));
    Console.ReadLine();
    Console.WriteLine(randomstring(20));
    Console.ReadLine();
    Console.WriteLine(randomstring(18));
    Console.ReadLine();
    }

    static string randomstring(int len)
    {
    // Devuelve una cadena de longitud especificada con caracteres aleatorios
    // de numeros, letras mayusculas y minusculas codigo ASCII.
    //
    Random r = new Random(DateTime.Now.Millisecond);

    sbyte[] buffer = new sbyte[len];
    char[] res = new char[len];
    for (int i = 0; i < len; i++)
    {
    int s = r.Next(1, 4);
    switch (s)
    {
    case 1:
    res[i] = Convert.ToChar(r.Next(49, 57));
    break;
    case 2:
    res[i] = Convert.ToChar(r.Next(65, 90));
    break;
    default:
    res[i] = Convert.ToChar(r.Next(97, 122));
    break;
    }
    }

    return new String(res);
    }
    }
    }

    ResponderEliminar
  5. Me fue de mucha utilidad. Muchas gracias.

    ResponderEliminar
  6. public static string GenerarCadenaAleatoria(int maxLenght)
    {
    try
    {
    var obj = new Random();
    const string allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
    var longitud = allowedChars.Length;
    var res = "";

    for (int i = 0; i < maxLenght; i++)
    {
    res += allowedChars[obj.Next(longitud)];
    }
    return res;

    }
    catch (Exception)
    {
    throw new Exception("No se puede generar una cadena aleatoria");
    }
    }

    ResponderEliminar
  7. (Máquina tragamonedas) Escriba una aplicación en C++ que simule una máquina tragamonedas. El jugador inicia con f fichas. El valor para f es una entrada al programa y usted cobra 25 céntimos de sol por ficha. En cada jugada, el jugador puede apostar de 1 a 4 fichas. Si el jugador ingresa 0 como el número de fichas a apostar, entonces el programa se detiene. Al final del juego, el programa muestra el número de fichas que quedan y que tanto ganó o perdió el jugador en una cantidad en soles. Existen tres ranuras en la máquina y cada una de ellas mostrará una de las tres piezas posibles: CAMPANA, UVA y CEREZA. Cuando aparezcan ciertas combinaciones en las ranuras, la máquina pagará al jugador n veces la cantidad apostada. Las combinaciones ganadoras son las siguientes:

    Número Combinación Gana

    1 CAMPANA CAMPANA CAMPANA 10
    2 UVA UVA UVA 7
    3 CEREZA CEREZA CEREZA 5
    4 CEREZ CEREZA ----- 3
    5 CEREZA ----- CEREZA 3
    6 ----- CEREZA CEREZA 3
    7 CEREZA ----- ----- 1
    8 ----- CEREZA ----- 1
    9 ----- ----- CEREZA 1

    El símbolo ----- significa cualquier pieza.

    ResponderEliminar
  8. excelente, me sirvió de mucho....Esta Chevere!!!

    ResponderEliminar

 

Joefay. Powered By Blogger © 2012 Bombeli | Theme Design: ooruc