• 0

كيف أولّد قيمة نصية بشكل عشوائي بلغة#C؟

أحاول توليد قيم نصية بشكل عشوائي على تطبيق مبني بلغة #C، وهذه هي محاولتي:

private string RandomString(int size)
{
    StringBuilder builder = new StringBuilder();
    Random random = new Random();
    char ch;
    for (int i = 0; i < size; i++)
    {
        ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));                 
        builder.Append(ch);
    }

    return builder.ToString();
}

 string Rand1 = RandomString(4);

 string Rand2 = RandomString(4);

 string docNum = Rand1 + "-" + Rand2;

 لكن أحصل على نفس القيمة النصية دائما، فأين هو الخطأ؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

كان السبب الرئيسي لحصولك على نفس القيمة المُولدة عشوائيا هو استعمالك لنفس instance أي نفس المتغير، مما يحتم على البرنامج إرجاع نفس القيمة لأنه لم يتم توليد القيمة من جديد، لذا وجب عليك تغيير في الكود البرمجي ليصبح على الشكل التالي:

private static Random random = new Random((int)DateTime.Now.Ticks);
private string RandomString(int size)
    {
        StringBuilder builder = new StringBuilder();
        char ch;
        for (int i = 0; i < size; i++)
        {
            ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));                 
            builder.Append(ch);
        }

        return builder.ToString();
    }

// الحصول على القيمة العشوائية الأولى
string Rand1 = RandomString(4);

// الحصول على القيمة العشوائية الثانية
string Rand2 = RandomString(4);

// إنشاء  القيمة المُرجعة بمزج القيمتين السابقتين
string docNum = Rand1 + "-" + Rand2;

*ملاحظة: يجب الانتباه لمثل هذه الأمور التي قد تبدو بسيطة، لكنها مهمة في عالم البرمجة.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن