C# Programming

توليد أعداد عشوائية في C#: دليل شامل

Spread the love

توليد أعداد عشوائية في C#: دليل شامل

  1. فهم فئة Random
  2. توليد أعداد صحيحة عشوائية
  3. توليد أعداد عشرية عشوائية
  4. توليد أعداد عشوائية متعددة بكفاءة
  5. بذر مولد الأعداد العشوائية
  6. أعداد عشوائية آمنة من الناحية التشفيرية
  7. الخلاصة
  8. الأسئلة الشائعة

1. فهم فئة Random

تُعد فئة System.Random في C# الأداة الأساسية لإنشاء أعداد شبه عشوائية. هذه الأعداد ليست عشوائية تمامًا (لأنها تتطلب مصدرًا فعليًا للعشوائية)، ولكن تتسلسلاتها تبدو عشوائية في معظم التطبيقات. يتم إنشاؤها بشكل حتمي من قيمة بذر أولية. ينتج نفس البذر نفس التسلسل، وهذا مفيد في تصحيح الأخطاء، ولكن من المهم تذكره للتطبيقات التي تحتاج إلى عشوائية حقيقية.

2. توليد أعداد صحيحة عشوائية

الطريقة الأساسية هي Random.Next(). أكثر الأحمال أهمية:

  • Next(): تُرجع عددًا صحيحًا غير سالب أقل من int.MaxValue.
  • Next(maxValue): تُرجع عددًا صحيحًا غير سالب أقل من maxValue (يجب أن يكون maxValue موجبًا).
  • Next(minValue, maxValue): تُرجع عددًا صحيحًا ≥ minValue و < maxValue (maxValue > minValue).

مثال:


using System;

public class RandomNumberGenerator
{
    public static void Main(string[] args)
    {
        Random random = new Random();

        int randomNumber1 = random.Next(10); // من 0 إلى 9
        Console.WriteLine($"العدد العشوائي 1: {randomNumber1}");

        int randomNumber2 = random.Next(5, 15); // من 5 إلى 14
        Console.WriteLine($"العدد العشوائي 2: {randomNumber2}");
    }
}

3. توليد أعداد عشرية عشوائية

لتوليد أعداد عشرية عشوائية ذات دقة مزدوجة بين 0.0 (ضمنيًا) و 1.0 (باستثناء 1.0)، استخدم random.NextDouble(). قم بتغيير حجمها وإزاحتها لنطاقات أخرى:


double randomNumber = random.NextDouble() * 100; // من 0.0 إلى 100.0

4. توليد أعداد عشوائية متعددة بكفاءة

أعد استخدام مثيل واحد من Random من أجل الكفاءة عند توليد العديد من الأعداد. إنشاء العديد من المثيلات بسرعة (باستخدام مُنشئ افتراضي، يُبذر بواسطة ساعة النظام) يمكن أن يؤدي إلى تسلسلات متشابهة، مما يقلل من العشوائية الظاهرة.


Random random = new Random();
for (int i = 0; i < 10; i++)
{
    int randomNumber = random.Next(1, 101); // من 1 إلى 100 (ضمنيًا)
    Console.WriteLine($"العدد العشوائي {i + 1}: {randomNumber}");
}

5. بذر مولد الأعداد العشوائية

تحكم في التسلسل عن طريق تقديم بذر إلى مُنشئ Random:

  • التكرار: نفس البذر = نفس التسلسل (ضروري للاختبار).
  • تسلسلات محددة: مفيد للمحاكاة.

Random random1 = new Random(12345);
Console.WriteLine($"العدد العشوائي ببذر 12345: {random1.Next(100)}");

Random random2 = new Random(12345);
Console.WriteLine($"العدد العشوائي ببذر 12345 (مرة أخرى): {random2.Next(100)}"); // نفس العدد أعلاه

Random random3 = new Random(); // وقت التشغيل الحالي كبذر
Console.WriteLine($"العدد العشوائي ببذر وقت التشغيل الحالي: {random3.Next(100)}");

6. أعداد عشوائية آمنة من الناحية التشفيرية

في التطبيقات الحساسة للأمان، لا تستخدم أبدًا System.Random. استخدم System.Security.Cryptography.RandomNumberGenerator بدلاً من ذلك.

7. الخلاصة

توفر فئة Random توليد أعداد شبه عشوائية بسهولة. إن فهم البذر وإعادة استخدام المثيل أمر أساسي لكل من التكرار والكفاءة. أعط الأولوية لمولدات الأعداد العشوائية التشفيرية من أجل الأمان.

8. الأسئلة الشائعة

س: هل الأعداد عشوائية حقًا؟ ج: لا، شبه عشوائية. تبدو عشوائية ولكن يتم إنشاؤها بشكل حتمي.

س: كيف يتم توليد أعداد عشرية عشوائية؟ ج: استخدم random.NextDouble() وقم بتغيير حجمها وإزاحتها حسب الحاجة.

س: ماذا عن الأعداد العشوائية الآمنة من الناحية التشفيرية؟ ج: استخدم System.Security.Cryptography.RandomNumberGenerator.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *