C#:
גילוי מספרים אקראיים
איך לעשות:
הדרך הנפוצה ביותר לפיתוח מספרים אקראיים ב-C# היא באמצעות הכיתה System.Random
. הנה דוגמה פשוטה הממחישה את שימושה:
using System;
public class RandomNumberExample
{
static void Main(string[] args)
{
Random random = new Random();
int randomNumber = random.Next(1, 100); // מייצר מספר בין 1 ל-99
Console.WriteLine($"מספר אקראי: {randomNumber}");
}
}
התוצאה תהיה מספר אקראי כמו:
מספר אקראי: 42
לייצור מספר נקודה צפה אקראי בין 0.0 ל-1.0, ניתן להשתמש במתודה NextDouble
:
double randomDouble = random.NextDouble();
Console.WriteLine($"מספר נקודה צפה אקראי: {randomDouble}");
אם אתם עובדים על יישום רגיש לביטחון שדורש אקראיות קריפטוגרפית, עדיף להשתמש בכיתה RNGCryptoServiceProvider
הנמצאת ב-System.Security.Cryptography
:
using System;
using System.Security.Cryptography;
public class SecureRandomExample
{
static void Main()
{
byte[] randomNumber = new byte[4]; // יוצר מספר אקראי באורך 4-בתים
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
rng.GetBytes(randomNumber);
}
int value = BitConverter.ToInt32(randomNumber, 0);
Console.WriteLine($"מספר אקראי בטוח קריפטוגרפית: {value}");
}
}
ניתוח מעמיק
הפקת מספרים אקראיים ב-C# התפתחה עם השנים. בתחילה, הכיתה System.Random
הייתה הנבחרת ליצירת מספרים פסבדו-אקראיים. זהו פסבדו-אקראי מכיוון שבהינתן ערך זרע מסוים, היא תייצר את אותה הסדרה של מספרים, דבר שיכול להיות שימושי לניפוי באגים או לחזרתיות של בדיקות.
על אף שמספיק לצרכים בסיסיים, System.Random
אינה בטוחה לשימוש מרובה תהליכים ויכולה לייצר תוצאות צפויות, שאינן מתאימות ליישומים התלויים באבטחה. מגבלה זו הובילה להצגת הכיתה RNGCryptoServiceProvider
לאקראיות קריפטוגרפית, שהיא יותר בטוחה אך גם דורשת יותר משאבים.
חלופה ב-.NET Core ו-.NET 5+ היא הכיתה RandomNumberGenerator
ב-System.Security.Cryptography
לייצור מספרים אקראיים בצורה בטוחה, שמתכוונת להיות אופציה יותר מודרנית ונוחה לשימוש בהשוואה ל-RNGCryptoServiceProvider
.
לכל שיטה של ייצור מספרים אקראיים ב-C# יש את מקומה בהתאם לדרישות היישום. לרוב היישומים, System.Random
מספיקה, אך לאלו שדורשים מספרים אקראיים בטוחים ובלתי צפויים, הכיתות הקריפטוגרפיות מספקות חלופה עמידה.