مصلح الحريصي قام بنشر نوفمبر 27, 2004 مشاركة قام بنشر نوفمبر 27, 2004 السلام عليكم ورحمة الله وبركاته لدي نموذج عليه مربع نص اسمه ( Txt1 ) وزر أمر كتبت في حدث عند النقر لزر الأمر الكود التالي : Me.Txt1 = Int((10 * Rnd) + 1) المشكلة أن الأرقام تتكرر . الســــــــــــــــــــــؤال : ما هو الكود الذي يمنع تكرار الرقم حتى تنتهي الأرقام الواقعة بين ( 1 ) و ( 10 ) ثم تظهر رسالة بأنه سيتم تكرار الأرقام من جديد ؟ يا شباب تعبت وأنا أبحث في التعليمات وأحاول دون أي فائدة تذكر . بالنسبة لمثال الأخ / ابو حمود والأخ / مهند في على السجلات ومثالي بدون سجلات ولم أتمكن من استخلاص فكرت عدم التكرار المثالين. رابط هذا التعليق شارك More sharing options...
فهد الدوسري قام بنشر نوفمبر 28, 2004 مشاركة قام بنشر نوفمبر 28, 2004 (معدل) أخي مصلح قرأت لك هذه الملومة حول الدالة Rnd أرجو أن تفيدك . وتستخدم هذا الدالة في توليد أرقام عشوائية تقع ما بين الصفر و واحد بحد أقصي 15 رقما عشريا انظر المثال 1 ------------------------------------- التصريح Randomize : يعمل هذا التصريح مع الدالة Rnd ونستفيد منه عدم التكرارية و الحصول علي عشوائية افضل وذلك لأنه يعتمد علي ساعة النظام لديك .انظر المثال 2 في المثال 2 نعمل علي توليد أرقام عشوائية من واحد إلى عشرة . أما إذا أردت أن تجعل هذه العشوائية نصوص وليس أرقاما فلك طريقتين لتحايل علي هذا أما أن تضع النصوص في قاعدة بيانات وفي شكل سجلات وتعطي لكل سجل رقم أو تضعه في مصفوفة وتعطي لكل نص رقم أيضا وأنا افضل الطريقة الأولى لسرعتها .. إنتهى كلامه . المثال 1 myNumber = Rnd(عدد) 'فمثلا الدالة Rnd(10) قد تعطي رقما مثل 0.7055475 وعند تشغيل الدالة مرة أخري ينتج رقما آخر مثل 0.533424 وهكذا . المثال 2 Randomize MsgBox Int((10 * Rnd) + 1) المثال 3 'مثال لتوليد الالون بطريقة عشوائية Randomize Label1.BackColor = QBColor(Int((16 * Rnd) + 0)) المثال 4 For i = 1 To 4 Print Rnd() Next i تحياتي .. تم تعديل نوفمبر 28, 2004 بواسطه فهد الدوسري رابط هذا التعليق شارك More sharing options...
مصلح الحريصي قام بنشر نوفمبر 29, 2004 الكاتب مشاركة قام بنشر نوفمبر 29, 2004 أخي فهد شكراً لك تسرني مشاركتك . هل جربت الأمثلة لقد جربتها ولكن التكرار لا زال موجود ضع مربع نص وزر أمر وضع الأمثلة على زر الأمر الواحد تلو الأخر ثم جرب كل أمر منها ستجد التكرار موجود. رابط هذا التعليق شارك More sharing options...
السيد عبد العال قام بنشر نوفمبر 29, 2004 مشاركة قام بنشر نوفمبر 29, 2004 هذه فكرة تعتمد على تكوين حقيبة أرقام فى متغير global ثم نختار منها رقم عشوائى وبعد اختياره نحذفه من الحقيبة وعند فراغ الحقيبة نعيد ملأها أرجو الجرية والأفادة مع خالص الحب والتقدير Const BagMax = 10 Type RandomBag n As Integer X(BagMax) As Integer End Type Global RandBag As RandomBag Function RandX() As Integer Dim Index As Integer If RandBag.n < 1 Then 'Insialize ...... For i = 0 To BagMax - 1 RandBag.X(i) = i + 1 Next i RandBag.n = BagMax End If Index = Int(Rnd * RandBag.n) RandX = RandBag.X(Index) 'Remove Void .......... For i = Index To RandBag.n - 1 RandBag.X(i) = RandBag.X(i + 1) Next 'Decrease Bag Count RandBag.n = RandBag.n - 1 End Function Sub test() Debug.Print RandX() End Sub رابط هذا التعليق شارك More sharing options...
السيد عبد العال قام بنشر نوفمبر 30, 2004 مشاركة قام بنشر نوفمبر 30, 2004 هذا التعديل يمنع التكرار الذى قديحدث فى بعض الحالات Const BagMax = 10 Type RandomBag n As Integer X(BagMax) As Integer End Type Global RandBag As RandomBag Function RandX() As Integer Dim Index As Integer If RandBag.n < 1 Then 'Insialize ...... MsgBox ("Bag Empty .." & BagMax & " No.s Will be added to Bag.") For i = 0 To BagMax - 1 RandBag.X(i) = i + 1 Next i RandBag.n = BagMax End If Index = Round(Rnd * (RandBag.n - 1)) RandX = RandBag.X(Index) 'Remove Void .......... For i = Index To RandBag.n - 1 RandBag.X(i) = RandBag.X(i + 1) Next 'Decrease Bag Count RandBag.n = RandBag.n - 1 End Function Private Sub AddRndX_Click() Text01 = RandX() End Sub رابط هذا التعليق شارك More sharing options...
الردود الموصى بها
من فضلك سجل دخول لتتمكن من التعليق
ستتمكن من اضافه تعليقات بعد التسجيل
سجل دخولك الان