Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Chọn phần tử ngẫu nhiên từ List trong C#


Để 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 đến list.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 Random một lần, dùng lại nhiều lần
  • Đa luồng: Dùng ThreadLocal<Random> hoặc RandomNumberGenerator

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);