Librería PHP para generar valores aleatorios de diferentes tipos de datos de forma criptográficamente segura.
- PHP >= 8.1
- ext-mbstring
composer require jesus-ag28/php-random<?php
use Random\Random;
// Generar un número entero aleatorio
$numero = Random::int(1, 100);
// Generar una cadena aleatoria
$cadena = Random::string(20);
// Generar un booleano aleatorio
$bool = Random::boolean();Genera un número entero aleatorio dentro del rango especificado.
Random::int(1, 100); // Número entre 1 y 100
Random::int(); // Número entre 0 y PHP_INT_MAXGenera un número de punto flotante aleatorio.
Random::float(0, 1); // Float entre 0 y 1
Random::float(10.5, 20.5); // Float entre 10.5 y 20.5Genera una cadena aleatoria con caracteres alfanuméricos, especiales y españoles.
Random::string(15); // "aBc123!@ñÑ"Genera una contraseña segura.
Random::password(16); // "aB3!xY9@mN5#qW2$"
Random::password(12, false); // "aBc123XyZ789"Genera un código de verificación.
Random::verificationCode(6); // "aB3xY9"
Random::verificationCode(6, true); // "123456"Genera un slug URL-friendly.
Random::slug(3); // "random-test-example-456"Genera un token hexadecimal.
Random::token(32); // "a1b2c3d4e5f6..."Genera un token en formato Base64.
Random::base64Token(32); // "YWJjZGVm..."Genera un UUID v4.
Random::uuid(); // "550e8400-e29b-41d4-a716-446655440000"Genera un valor booleano aleatorio.
Random::boolean(); // true o falseGenera un array de valores aleatorios.
Random::array(5); // [123, 456, 789, 101, 112]
Random::array(3, fn() => Random::string(5)); // ["aBc12", "xYz34", "mNp56"]Selecciona un elemento aleatorio de un array.
Random::fromArray(['rojo', 'verde', 'azul']); // "verde"Selecciona un elemento con pesos especificados.
Random::weightedPick(['común', 'raro', 'épico'], [70, 25, 5]); // "común" (70% probabilidad)Mezcla un array de forma criptográficamente segura.
Random::shuffle([1, 2, 3, 4, 5]); // [3, 1, 5, 2, 4]Selecciona un caso aleatorio de un enum (PHP 8.1+).
enum Color { case Red; case Green; case Blue; }
Random::enum(Color::class); // Color::GreenGenera una fecha aleatoria.
Random::date('2020-01-01', '2024-12-31'); // "2022-06-15"Genera una fecha y hora aleatoria.
Random::dateTime('2023-01-01 00:00:00', '2023-12-31 23:59:59'); // "2023-06-15 14:30:45"Genera un color hexadecimal con prefijo #.
Random::color(); // "#a1b2c3"Genera un color hexadecimal sin prefijo.
Random::hexColor(); // "a1b2c3"Genera una latitud aleatoria (-90 a 90).
Random::latitude(); // 45.123456Genera una longitud aleatoria (-180 a 180).
Random::longitude(); // -73.987654Genera coordenadas GPS completas.
Random::coordinates(); // ['latitude' => 45.123456, 'longitude' => -73.987654]Genera una dirección de correo electrónico.
Random::email(); // "abc123@example.com"
Random::email('midominio.com'); // "xyz789@midominio.com"Genera una dirección IP v4 válida.
Random::ipAddress(); // "192.168.1.100"Genera una dirección MAC válida.
Random::macAddress(); // "a1:b2:c3:d4:e5:f6"Genera un nombre de dominio.
Random::domainName(8); // "abcdefgh.com"Genera una URL aleatoria.
Random::url(15); // "https://www.example.com/abc123xyz"Genera un User Agent común.
Random::userAgent(); // "Mozilla/5.0 (Windows NT 10.0; Win64; x64)..."Genera un nombre completo en español o inglés.
Random::fullName(); // "Juan García López"
Random::fullName(false); // "John Smith Johnson"Genera una dirección postal.
Random::postalAddress(); // "Calle Mayor, 28001, Madrid, Madrid"
Random::postalAddress(false); // "Main St, 10001, New York, NY"Genera un número de teléfono nacional.
Random::phoneNumber(); // "65 123 45 67"
Random::phoneNumber(false); // "555-123-4567"Genera un número de teléfono internacional.
Random::internationalPhoneNumber(); // "+34 65 123 45 67"
Random::internationalPhoneNumber(false); // "+1-555-123-4567"Genera un nombre de usuario combinando palabras y adjetivos (700+ palabras épicas, 600+ adjetivos).
// Totalmente aleatorio
Random::username(); // "DragonWarrior"
Random::username(2, 1); // "ThunderPhoenixMaster"
Random::username(1, 2); // "CyberNinjaHunter"
Random::username(3, 0); // "DragonTitanStorm"
Random::username(0, 3); // "MightySwiftDark"
// Con palabra personalizada
Random::username('Jesus', 1); // "JesusWarrior"
Random::username('Maria', 2); // "MariaSwiftDark"
// Con adjetivo personalizado
Random::username(1, 'Pro'); // "DragonPro"
Random::username(2, 'Gaming'); // "ThunderPhoenixGaming"
// Ambos personalizados con aleatorios
Random::username('Dark', 1); // "DarkHunter"
Random::username(1, 'Legend'); // "PhoenixLegend"
// Solo personalizados
Random::username('Shadow', 'Master'); // "ShadowMaster"
Random::username('Cyber', 'King'); // "CyberKing"
// Mezcla compleja
Random::username('Epic', 2); // "EpicMightySwift"
Random::username(2, 'Ultimate'); // "DragonPhoenixUltimate"Genera un número de tarjeta de crédito válido (solo para pruebas).
Random::creditCardNumber(); // "4532123456789012"Genera un tamaño de archivo en formato legible.
Random::fileSize(); // "15.6 MB"
Random::fileSize(1024, 1048576); // "512.3 KB"Todos los métodos utilizan random_int() y random_bytes(), que son criptográficamente seguros (CSPRNG). Esto hace que la librería sea adecuada para generar tokens, contraseñas y otros datos sensibles.
- ✅ Criptográficamente seguro (CSPRNG)
- ✅ Compatible con caracteres UTF-8 y españoles
- ✅ Type hints estrictos (PHP 8.1+)
- ✅ Validación de parámetros
- ✅ Soporte para enums (PHP 8.1+)
- ✅ Sin dependencias externas
use Random\Random;
$usuario = [
'nombre' => Random::fullName(),
'email' => Random::email('miapp.com'),
'telefono' => Random::phoneNumber(),
'direccion' => Random::postalAddress(),
'username' => Random::username(),
'password' => Random::password(16),
'uuid' => Random::uuid(),
'fecha_registro' => Random::dateTime('2023-01-01 00:00:00'),
];$token = Random::token(64);
$apiKey = Random::base64Token(32);$codigoSMS = Random::verificationCode(6, true); // Solo números
$codigoEmail = Random::verificationCode(8); // Alfanumérico$coordenadas = Random::coordinates();
echo "Lat: {$coordenadas['latitude']}, Lon: {$coordenadas['longitude']}";MIT
Jesús Ayús - dev@jesusayus.es