Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด Random.Next() ใน C# : สุ่มจำนวนเต็ม

เมธอด Random.Next() ใน C# ใช้สำหรับสร้างจำนวนเต็มสุ่ม (random integer) ที่ไม่เป็นลบ (non-negative) มี overload หลายรูปแบบสำหรับควบคุมช่วงค่า

รูปแบบไวยากรณ์ (Syntax)

public virtual int Next();
public virtual int Next(int maxValue);
  • Next() : คืนค่าจำนวนเต็มสุ่มระหว่าง 0 ถึง Int32.MaxValue (2,147,483,647)
  • maxValue : ขอบเขตบนสุด (exclusive upper bound) ของจำนวนสุ่ม ค่าที่ได้จะอยู่ระหว่าง 0 ถึง maxValue-1

ตัวอย่างที่ 1: สุ่มจำนวนเต็มไม่เป็นลบ (Next())

using System;

public class Demo
{
    public static void Main()
    {
        Random r = new Random();
        
        Console.WriteLine("Random numbers.....");
        for (int i = 1; i <= 5; i++)
        {
            Console.WriteLine(r.Next());
        }
    }
}

ผลลัพธ์ (ตัวอย่าง)

Random numbers.....
1014639030
1510161246
1783253715
487417801
249480649

ตัวอย่างที่ 2: สุ่มในช่วงที่กำหนด (Next(maxValue))

using System;

public class Demo
{
    public static void Main()
    {
        Random r = new Random();
        Random r2 = new Random();
        
        Console.WriteLine("Random numbers (0 to Int32.MaxValue).....");
        for (int i = 1; i <= 5; i++)
        {
            Console.WriteLine(r.Next());
        }
        
        Console.WriteLine("\nRandom numbers from 0 to 9 (Next(10)).....");
        for (int i = 1; i <= 5; i++)
        {
            Console.WriteLine(r2.Next(10));
        }
    }
}

ผลลัพธ์ (ตัวอย่าง)

Random numbers.....
613432308
1705125884
1787561614
1243383842
2016323534

Random numbers from 0 to 9.....
2
7
8
5
9

Overload อื่นที่มีประโยชน์

public virtual int Next(int minValue, int maxValue);

สุ่มค่าระหว่าง minValue (inclusive) ถึง maxValue (exclusive)

หมายเหตุสำคัญ

  • คลาส Random ใช้ Pseudo-random number generator (PRNG) ต้องการ seed เริ่มต้น
  • หากสร้าง new Random() ติดกันเร็วเกินไป อาจได้ seed เดียวกัน (จาก system clock) → ลำดับสุ่มซ้ำ
  • สำหรับความปลอดภัยทางเข้ารหัส (Cryptographic) ให้ใช้ System.Security.Cryptography.RandomNumberGenerator แทน
  • ใน .NET 6+ สามารถใช้ Random.Shared สำหรับ instance ร่วมกันได้