Để chọn phần tử ngẫu nhiên từ List trong C#, sử dụng lớp Random để tạo chỉ số ngẫu nhiên trong phạm vi độ dài List.
Ví dụ
using System;
using System.Collections.Generic;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
var random = new Random();
var list = new List { "one", "two", "three", "four" };
// Tạo chỉ số ngẫu nhiên: 0 đến Count-1
int index = random.Next(list.Count);
Console.WriteLine("Phần tử ngẫu nhiên: " + list[index]);
}
}
}
Kết quả mẫu
Phần tử ngẫu nhiên: three
Giải thích
random.Next(list.Count)trả về số ngẫu nhiên từ 0 đếnlist.Count - 1- Mỗi lần chạy cho kết quả khác nhau
Lưu ý quan trọng
- Không tạo new Random() trong vòng lặp - sẽ trả về cùng giá trị do seed từ thời gian
- Đúng: Tạo
Randommột lần, dùng lại nhiều lần - Đa luồng: Dùng
ThreadLocal<Random>hoặcRandomNumberGenerator
Chọn nhiều phần tử ngẫu nhiên (không trùng)
// Shuffle và lấy N phần tử đầu var shuffled = list.OrderBy(x => random.Next()).Take(3).ToList();
C# 8+: Random.Shared (thread-safe)
int index = Random.Shared.Next(list.Count);