
Llevamos utilizando la clase Random
de .NET para generar números aleatorios desde hace mucho tiempo, en su aparición con la versión 1.1 de .NET Framework (año 2002). Probablemente por eso, muchos de nosotros la usamos de forma automática, sin pararnos a estudiar todas sus posibilidades y las novedades que le han ido añadiendo a lo largo del tiempo.
En este artículo vamos a ver algunas características de la clase Random
que quizás no conocías... o quizás sí, pero que no está de más refrescarlas:
- Los números generados no son realmente aleatorios.
- En versiones antiguas de .NET, era más probable que
Random
generara números impares. - No se debe usar
Random
para operaciones criptográficas. - No es buena idea crear un objeto
Random
cada vez que necesitemos un número aleatorio. - Si estamos en .NET 6+, mejor usar
Random.Shared
. - El método
Shuffle()
desordena arrays. - El método
GetItems()
permite obtener elementos aleatorios de una colección. - Podemos heredar de
Random.
¡Vamos a ello!
Publicado por José M. Aguilar a las 8:05 a. m.
Etiquetas: .net

Aquí están los enlaces recopilados durante la semana pasada 😊
Entre los contenidos destacables, una pregunta: ¿somos conscientes del coste real de las operaciones de boxing y unboxing en .NET? Normalmente no las tenemos en cuenta, pero pueden llegar a ser importantes, y podemos aprender a detectarlas y evitarlas. Ali Hamza Ansari nos lo explica en su artículo.
También, Anton Martyniuk ha recopilado en este post una serie de paquetes NuGet que pueden mejorar tu productividad y la calidad de tus proyectos si usas Entity Framework Core.
Y Addy Osmani nos cuenta la historia, evolución y futuro de Core Web Vitals, los indicadores de rendimiento web que Google utiliza para medir la experiencia de usuario en las páginas web. Muy interesante.
El resto, a continuación...
Por si te lo perdiste...
- Renderizar componentes Blazor en vistas MVC (3/3): componentes interactivos WebAssembly
José M. Aguilar - El tipo de retorno ActionResult<T> en ASP.NET Core
José M. Aguilar
.NET
- xUnit Assert basics: True/False, Equal, Same, Matches
David Grace - Hidden Costs of Boxing in C#: How to Detect and Avoid Them
Ali Hamza Ansari - Why Microsoft Won't Revive WinForms (And What Developers Are Using Instead
Matt Mattei - Is .NET 10 for AI Replacing Python?
Prayag Vakharia - Your HTML Comments Are More Powerful Than You Think: Building Custom Validation Grammars with HtmlAgilityPack
Aaron Stannard - Wasm 3.0 for .NET Developers
Sam Basu