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

Tạo chuỗi ngẫu nhiên (Random String) trong C#

Sử dụng Random kết hợp StringBuilder để sinh chuỗi ký tự ngẫu nhiên. Cách phổ biến: sinh số ngẫu nhiên trong khoảng mã ASCII của chữ cái (A-Z hoặc a-z).

Thuật toán sinh chữ cái in hoa A-Z

Random random = new Random();
char c = (char)('A' + random.Next(0, 26));  // 0-25 → A-Z

Mã nguồn hoàn chỉnh (sinh chuỗi 4 ký tự in hoa)

using System.Text;
using System;

class Program
{
    static void Main()
    {
        StringBuilder str = new StringBuilder();
        Random random = new Random((int)DateTime.Now.Ticks);
        
        for (int i = 0; i < 4; i++)
        {
            // Sinh số 0-25, cộng 'A' (65) → 'A' đến 'Z'
            char c = (char)('A' + random.Next(0, 26));
            str.Append(c);
        }
        
        Console.WriteLine(str.ToString());
    }
}

Kết quả (ví dụ)

ATTS

Các biến thể phổ biến

Yêu cầuCode
Chữ thường a-z(char)('a' + random.Next(0, 26))
Chữ + số (alphanumeric)const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; chars[random.Next(chars.Length)]
Chuỗi an toàn URL (base64url)Convert.ToBase64String(bytes).Replace('+','-').Replace('/','_').TrimEnd('=')
GUID ngẫu nhiênGuid.NewGuid().ToString("N")

Cách hiện đại (.NET 6+): RandomNumberGenerator

using System.Security.Cryptography;

// An toàn mật mã (cryptographically secure)
byte[] bytes = new byte[32];
RandomNumberGenerator.Fill(bytes);
string token = Convert.ToBase64String(bytes);

Lưu ý

  • Random không an toàn mật mã - không dùng cho password, token, key.
  • new Random() dùng seed từ Environment.TickCount - hai instance tạo gần nhau có thể cho cùng chuỗi.
  • Dùng Random.Shared (.NET 6+) cho thread-safe shared instance.
  • StringBuilder hiệu quả hơn nối chuỗi + trong vòng lặp.