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

منع التكرار في دالة الإختيار العشوائي

بدأه فهد الحليصي في 13 أبريل 2013 · 2 رد · 1,902 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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


اخواني في هذا المنتدى الكبير تحية طيبه وبعد


 


اولا / انا مبتدئ ( في فيجول بيسك 6 ) وهذا من أجل أن أحصل على أسهل كود وابسط  طريقه وأوضح شرح .


 


ثانيا / استخدمت دالة الإختيار العشوائي RND


وذلك للإختيار العشوائي لأرقام تبدأ من ( صفر وحتى رقم عشرة ) ونجح الأمر لكن ظهر لي مشكلتين هما :


 


1- المشكله الأولى : ( تكرار البدايه ) يعني عند تجربة البرنامج في كل مرة 


يبدأ بنفس الإرقام العشوائية مثال للتوضيح


 


1- تشغيل البرنامج في المرة الأولى يعطي  ( 7 ) ثم  ( 5 ) ثم ( 3 ) وهكذا


2- تشغيل البرنامج في المرة الثانية يعطي  ( 7 ) ثم  ( 5 ) ثم ( 3 ) وهكذا


3- تشغيل البرنامج في المرة الثالثة  يعطي ( 7 ) ثم  ( 5 ) ثم ( 3 ) وهكذا


 


2- المشكله الثانية : ( إختيار  مكرر )


يعني انه يختار نفس الرقم أكثر من مرة قبل أن تنتهي سلسة الخيارات كامله


 


مثال للتوضيح 


البرنامج يعرض الأرقام ( 7 ) ثم ( 5 ) ثم ( 3 ) ثم (7 )


لاحظ تكرار الرقم سبعة قبل إكتمال جميع الخيارات


 


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


الخلاصه / كنت أتوقع أن أجد في صيغة الداله ٌRND  مجال أرحب للخيارات


كان تكون محدودة بين فترتين سواء بأرقام أو حروف أو رموز


وأن تكون عشوائية دون تكرار للبدايه أو الخيارات قبل نهاية سلسة الخيارات


على العموم


هذه التساؤلات أطرحها من أجلي ومن أجل غيري 


نفع الله بكم وأحسن اليكم


خالص شكري وتقديري لكم


تحياتي


#2

فيما يخص التكرار بإمكانك أن تعرف مصفوفة تقوم بتخزين كل رقم جديد يتم توليده

وعندما تقوم بتوليد رقم جديد يفحص القيمة إن كانت في المصفوفة أو لا

وفإن لم يجدها يقبل القيمة لأنها تعني أنها أول مرة تظهر وغير مكررة

وإن وجدها فها يعني أنها قد ظهرت من قبل وتقوم بتكرار العملية من خلال حلقة مشروطة

أي يبقى يولد ويفحص إلا أن يصل لقيمة غير مكررة

وطبعا شرط الحلقة يجب أن يتضمن شرط إضافي وهو انتهاء مجال الأرقام حتى لا يدخل في حلقة كل قيمها قد ظهرت فلن يجد قيمة غير مكررة

 

أما بالنسبة لتغيير البداية والتسلسل استخدم Randomize بدلا من Rnd

 

بالنسبة للمجال أظن أنه بالإمكان صنعه بنفسك

بمعنى أن الدالة تولد رقم عشوائي بين 0 و 1 كقيمة عشرية

وأنت تضرب وتجمع لتحصل على المجال الذي تريد

على فرض تريد توليد مجال بين 13 و 45

فبطرح الحد الأدنى من الأعلى يكون لديك 45-13 = 22

إذا أي عدد يتولد تضربه ب 22 ثم تجمع له 13 فتكون الأعداد المتولدة من 13 إلى 45

وبنفس الطريقة تريد توليد أحرف فقوم بتوليد عدد ضمن مجال أكوادها ثم حولها إلى رمز

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#3

السلام عليكم...

 

أرجو الاطلاع على هذا الموضوع.

 

سلام.

2

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

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