Badraoui نشر 10 فبراير 2016 أرسل تقرير نشر 10 فبراير 2016 أحاول توليد قيم نصية بشكل عشوائي على تطبيق مبني بلغة #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 E.Nourddine نشر 11 فبراير 2016 أرسل تقرير نشر 11 فبراير 2016 كان السبب الرئيسي لحصولك على نفس القيمة المُولدة عشوائيا هو استعمالك لنفس 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; *ملاحظة: يجب الانتباه لمثل هذه الأمور التي قد تبدو بسيطة، لكنها مهمة في عالم البرمجة. اقتباس
السؤال
Badraoui
أحاول توليد قيم نصية بشكل عشوائي على تطبيق مبني بلغة #C، وهذه هي محاولتي:
لكن أحصل على نفس القيمة النصية دائما، فأين هو الخطأ؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.