الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد توليد ارقام عشوائية بطول 15 خانه

بدأه ya_as في 7 يونيو 2007 · 15 رد · 3,536 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اريد توليد ارقام عشوائية بطول 15 خانه

وشكرا

#2

السلام عليكم

أخي بإمكانك إستعمال هذا الكود علما أني حصرت الأرقام بين 10 و 50 وبإمكانك تغيرها بالكيفية التي تتناسب مع حاجياتك

 Random RD = new Random();
 //Returns a nonnergative number less than 50 greater than 10
 int i = 0;// indexes
 int[] V = new int[15];//the vector

 while (i < 15)
 {
   int b = RD.Next(10, 50); // generate random Nbr
   V=b;
   i++; // increament index
 }
#3

شكرا أخي على الرد

بس حاولت بهذه الطريقة ما قدرت اولد ارقام بطول 14 خانه

اكثر شي 10 خانات

وشكرا

#4

السلام عليكم

أخي في هذه التعليمة قمت بحجز مصفوفة ذات بعد واحد وطولها 15

int[] V = new int[15];//the vector

بهذه التعليمة سيعيد عمل ما 15 مرة من صفر إلى 14

 while (i < 15)

وبهذه التعليمة يولد في كل مرة رقم عشوائي ثم يضيفه الى المصفوفة وتحديد في المكان i الذي سيتغير تصاعديا من صفر الى 14

int b = RD.Next(10, 50); // generate random Nbr
   V=b;

وهكذا ينتقل الى المكان الموالي حيث سيضع القيمة الجديدة

i++; // increament index

هذا شرح مبسط للكود وإن لم تفهمه أخبرني أين الإشكال

#5
int x;
x = (int) rnd.next(1,16)
#6

أشكرك اخي على كل شي

بس ده المثال كما قلت يكون مصفوفة من 15 عنصر كل عنصر مكون من رقمين

انا اريد تكوين عناصر مكونه من 15 خانه يعني مثلا

123987654342567

انا جربت الكود التالي بس يولد ارقام بطول اقل 10 او 11

Random RD = new Random();

int b = RD.Next() * 10^ 14;

#7

السلام عليكم ورحمة الله وبركاته

لقد لفت انتباهي موضوعكم هذا حيت تذكرت هاجسي عندما كنت في سنه اولى في كلية المجتمع - صنعاء وهو توليد 14 رقما عشوائيا كما في كروت الدفع المسبق لشركات الإتصالات ومن ثم تطوير البرنامج لكي يستطيع محاكاة الطرف الآخر، اعتقد بانني اتتمت عملية توليد الأرقام العشوائية لكن كان ذلك بلغة السي.

ارجو المعذرة على ما سلف ،لكنني حاولت ان ان اشارككم الموضوع حيث قمت بعمل تطبيق بلغة الس شارب يقوم بتوليد ارقام عشوائية حسب مدى تحدده بنفسك تستطيع ايظا توليد 14 خانه او اكثر اضافة الى استطاعتك تحديد عدد النتائج المرجوة .

لا اطيل عليكم التطبيق في المرفقات وان شاء الله تجدون فيه مبتغاكم .

ان شاء الله تدعو لنا فقط .

Ready To Help

RONDOMIZE.rar

نحن اليمانيون يا طه تطير بنا الى روابي العلا أرواح أنصارِ

اذا تذكرت عمارا ومبدأه فأفخر بنا اننا أحفاد عمارِ

بحثت عن سر السعادة جـــــــــاهدا فوجدت ذاك السر في تقواك

فليرضى عني الناس أو فليسخطوا انا لم أعد أأبى لغير رضـــاك

اللهم ارحم المسلمين والمسلمات المؤمنين والمؤمنات الأحياء منهم والأموات

#8

اخوتي الكرام .. السلام عليكم ورحمة الله وبركاته..

ان المشكلة هنا ليست في الطريقة حيث انها سليمة 100% .. ولكن المشكلة هي في أن المتغيرات من نوع int لا تستوعب أكثر من 10 (او 11) خانة..

ولهذا انا انصح باستخدام انواع متغيرات تستوعب عدد ارقام أكثر مثل double :

double r1;

Random res1 = new Random();

r1=res1.NextDouble();

lebel1.Text=(r1*1000000000000000).ToString();

حيث أن lebel1 هنا ستأخذ قيمة عشوائية مكونة من 14 خانة وإذا اردت تغيير هذا الرقم فكل ما عليك فعله هو تغيير عدد الأصفار

لا أعلم ان كان حلي صحيحا فما انا الا مبتدئ

#9

السلا م عليكم

أجل حلك صحيح ويمكن أيضا توليد عددين عشوائين مثل واحد طوله 9 والآخر 5 ثم ضرب الأول في 100000 ( لتكون عبارة علىleft shifting ) ثم نجمعه مع الآخر ليأخذ مكان الأصفار

#10

بسم الله الرحمن الرحيم

في البداية احيي الأخ Bin Laiid وبقية الأعضاء واتمنى ان بسمحو لي بالإضافة ولهم جزبل الشكر

اردت ان اضيف هذه الفكرة وهي التي استخدمتها في المثال

فإليكم الكود التالي

 public void Randomize(double Min, double Max)
		{
			Random rd = new Random();
			int j = 1;
			while (j <= Aselwi)
			{
				double d = rd.NextDouble();
				double f = Min + (Max - Min) * d;
				double dr = Math.Round(f);
				lsb.Items.Add(dr);
				j++;
			}

		}

ثلاحظون ان الداله Randomize تستقبل 2 باراميترز

الباراميتر الأول وهو Min والثاني Max اصغر رقم واكبر رقم نريد توليد ارقام عشوائية بينهما

عمل الدوارة (While loop ) هنا هو كم عدد الأرقام التي تريد توليدها حيث يعتبر 22999999999999 رقما بمعنى كم عدد النتائج المرجوة وليس كم عدد الخانات المكونه للرقم ونلاحظ ايظا المتغير Aselwi والذي يخزن فية عدد النتائج المرجوة حيث يستقبل قيمته من كمبو بكس

ثلاحظون ايظا

الدالة NextDouble وهي تعيد قيمة عشوائية من نوع Double هذه القبمة محصورة بين الصفر والواحد

الكود التالي هو فكرة السؤال

double f = Min + (Max - Min) * d;

حيث سنحصل من هذا الكود على عدد محصور بين اقل قيمة واكبر قيمه هذا العدد مضرب بالرقم العشوائي الناتج من الدالة NextDouble وهو ينتج في كل مرة مع اللوب

وطالما كانت الدالة NextDouble تعيد قيمة بين الصفر والواحد بالطبع سيكون الرقم المخزون في المتغير f ذو علامة عشرية ولهذا استخدمنا السطر التالي

double dr = Math.Round(f);

بعد ذلك قمنا بتخزين الرقم في المتغير dr ومن ثم اضاقتة الى list items

على العموم الكود موجود في التطبيق وقد أضفناهذه الملاحظة فقط للتوضيح

متمنيا ان اكون قد وفقت .

شاكرا لكم قراءة الموضوع .

READY TO HELP!

نحن اليمانيون يا طه تطير بنا الى روابي العلا أرواح أنصارِ

اذا تذكرت عمارا ومبدأه فأفخر بنا اننا أحفاد عمارِ

بحثت عن سر السعادة جـــــــــاهدا فوجدت ذاك السر في تقواك

فليرضى عني الناس أو فليسخطوا انا لم أعد أأبى لغير رضـــاك

اللهم ارحم المسلمين والمسلمات المؤمنين والمؤمنات الأحياء منهم والأموات

#11

السلام عليكم

أخي طريقتك صحيحة ولكن لماذا لا نلجأ الى ماهو أبسط طالما هناك عدة حلول.

إسمحلي أن أقدم ملاحظة بسيطة حول الكود الذي قدمته

private void Form1_Load(object sender, EventArgs e)
 {  
  int i;
   for (i = 1; i <= 100000; i++)
	{
	 comboBox1.Items.Add(i);
	}
}

100000 مرة!!! حاول تشغيل الملف التنفيذي بمفرده وستلاحظ أنه يستغرق مدة معينة قبل البدأ وذلك يعود للحلقة التي أضفتها في Form_Load

بإمكانك تعويضها ب numericUpDown وتحدد لها أكبر وأصغر عدد أو حتى textBoxليكتب المستعمل إختياره

طبعا هذه مجرد ملاحظة وبإمكانك تجاهلها

#12

بسم الله الرحمن الرحيم

اخي العزيز Ben Laiid تحياتي لك

اخي انا لاحظت تاخر البرنامج وملاحظتك ماخوذة بعين الإعتبار .

شكرا جزيلا

وفقك الله

نحن اليمانيون يا طه تطير بنا الى روابي العلا أرواح أنصارِ

اذا تذكرت عمارا ومبدأه فأفخر بنا اننا أحفاد عمارِ

بحثت عن سر السعادة جـــــــــاهدا فوجدت ذاك السر في تقواك

فليرضى عني الناس أو فليسخطوا انا لم أعد أأبى لغير رضـــاك

اللهم ارحم المسلمين والمسلمات المؤمنين والمؤمنات الأحياء منهم والأموات

#13

Please Look For This Answer , I hope it's will be Very Easy:

String [] myrndno=new String[100];
Random rnd=new Random();
for (byte i=0;i<=99;i++)
	   for (byte j=0;j<=13;j++)
			   myrndno=myrndno+convert.ToInt16(rnd.Next(0,10));

foreach (string s in myrndno)
		 listbox1.Items.Add(s);
#14

السلام عليكم

ما رأيك في هذا الحل؟

 Random RD = new Random();
 int i = 0;			
 while (i < 100)
 { listBox1.Items.Add(RD.Next((int)Math.Pow(10, 8), (int)Math.Pow(10, 9)).ToString() + RD.Next(10000, 99999).ToString());
   i++;
 }
#15

رائع أخي Ben_Laiid ..

أنا أعرف بل متيقن بأنك خبير C# وثقتي فيك كبيرة..

سلمت يدااااااااااك أخي حل ولا أحلى ..

بالتوفيق لك أخي .

#16

السلام عليكــم ورحمـة الله وبركاتــه ،،

للرفع

مواضيع مشابهة