เมธอด 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 ร่วมกันได้