php

Generar nombres aleatorios en PHP

Hace poco hice un post para generar fechas aleatorias. Ahora se me ocurrió hacer uno para generar nombres de personas de manera aleatoria.

Es un método poco eficaz y requiere que nosotros pongamos los datos, pero es lo único que se me ocurre.

Nombres aleatorios con PHPNombres aleatorios con PHP
Función que genera nombres aleatorios con PHP

Si queremos algo que sea más fácil que esto, podemos echarle un ojo a Faker, una librería para generar muchos datos de todos los tipos… fechas, nombres, html, números de teléfono, números, etcétera.

Nombres aleatorios con PHP

Para hacer esto necesitamos dos arreglos, o en el peor de los casos uno. El primero para nombres, y el segundo para apellidos. Por ejemplo, podemos tener dos arreglos así:

<?php
$nombres = ["josé", "pedro", "raúl", "maría", "luisa", "adriana", "angela", "alan"];
$apellidos = ["pérez", "rodriguez", "hernández", "martínez", "garcía", "marín", "sánchez", "smith", "rivera", "alderson"];
?>

Para generar un nombre aleatorio, el algoritmo es sencillo:

  1. Generar un número aleatorio entre 0 y el número de elementos del arreglo – 1 y usar ese número como índice para elegir un elemento. Es decir, si nuestro arreglo tiene 5 elementos, hay que generar un número entre 0 y 4 (recordemos que los arreglos empiezan desde el 0)
  2. Generar otro número aleatorio como el anterior, pero esta vez para el arreglo de apellidos
  3. Volver a generar otro número para el segundo apellido. Podemos tomar el apellido del mismo arreglo
  4. Concatenar el nombre, el primer apellido y el segundo
  5. Devolver el resultado

Para generar un número aleatorio podemos usar mt_rand que toma como argumentos un límite inferior y un límite superior, y devuelve un número entre esos límites.

Así que podemos llamar a mt_rand y pedirle que nos devuelva un número entre 0 y la longitud del arreglo menos 1.

Para obtener la longitud de un arreglo podemos usar count. De esta forma, podríamos elegir un elemento aleatorio así:

<?php
$elementoAleatorio = $arreglo[ mt_rand(0, count($arreglo) - 1) ];
?>

Ahora apliquemos esto a los arreglos que tenemos para generar un nombre completo:

<?php
$nombres = ["josé", "pedro", "raúl", "maría", "luisa", "adriana", "angela", "alan"];
$apellidos = ["pérez", "rodriguez", "hernández", "martínez", "garcía", "marín", "sánchez", "smith", "rivera", "alderson"];
$nombreAleatorio = $nombres[ mt_rand(0, count($nombres) -1) ];
$apellidoAleatorio = $apellidos[ mt_rand(0, count($apellidos) -1) ];
$otroApellidoAleatorio = $apellidos[ mt_rand(0, count($apellidos) -1) ];
echo "$nombreAleatorio $apellidoAleatorio $otroApellidoAleatorio";
?>

La salida será aleatoria, pero puede parecerse a:

angela hernández pérez

Si añadimos más nombres y apellidos, podremos generar una mayor cantidad de nombres. Ahora que ya lo tenemos, vamos a encapsular todo en una función.

<?php
/*
 Generar nombres completos aleatorios alimentándose de
 dos arreglos: uno para nombres y otro para apellidos

 Los arreglos se pasan por referencia

 @author parzibyte

 @param array $nombres Un arreglo con nombres

 @param array $apellidos Un arreglo con apellidos, de donde se sacarán el primer y el segundo apellido

 @return string El nombre completo generado de manera aleatoria
*/function generar_nombre_aleatorio(&$nombres, &$apellidos){
 $nombreAleatorio = $nombres[ mt_rand(0, count($nombres) -1) ];
 $apellidoAleatorio = $apellidos[ mt_rand(0, count($apellidos) -1) ];
 $otroApellidoAleatorio = $apellidos[ mt_rand(0, count($apellidos) -1) ];
 return "$nombreAleatorio $apellidoAleatorio $otroApellidoAleatorio";
}
?>

Para llamar a la función tenemos que pasarle dos arreglos que nosotros mismos hayamos definidos. Sería más fácil definirlos dentro de la función, pero no sería bueno para el rendimiento, así que los llamamos por referencia.

Además, de esta forma podemos pasarle un arreglo que hayamos recuperado de una base de datos, o cualquier arreglo que nosotros definamos con nuestros propios nombres.

Un ejemplo de llamar a la función sería:

<?php
$nombres = ["josé", "pedro", "raúl", "maría", "luisa", "adriana", "angela", "alan"];
$apellidos = ["pérez", "rodriguez", "hernández", "martínez", "garcía", "marín", "sánchez", "smith", "rivera", "alderson"];
$nombre = generar_nombre_aleatorio($nombres, $apellidos);
echo $nombre; // Salida de ejemplo -> pedro smith pérez
?>

Y así es como llegamos al final de esto.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Resetear GOOJPRT PT-210 MTP-II (Impresora térmica)

El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…

1 mes hace

Proxy Android para impresora térmica ESC POS

Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…

1 mes hace

Android – Servidor web con servicio en segundo plano

En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…

1 mes hace

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

2 meses hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

3 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

3 meses hace