منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : Random من listbox
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
اريد انشاء Random list من listbox بدون تكرار نفس item هذا هو الكود لاكن لايعمل يتم التكرار
كود :
       Dim r As New Random
       For i = 0 To 10
           If Not ListBox3.Items.Contains((ListBox2.Items(r.Next(0, ListBox2.Items.Count)) Then
               ListBox3.Items.Add(ListBox2.Items(r.Next(0, ListBox2.Items.Count)))
           End If
       Next
سؤال هل يمكن العمل على الفئات مثل يوجد هذه المجموعة

vb4arb2
vb4arb5
vb4arb+5%
vb1
vb2
vb3
vb4
vv1
vv2
vv3
هنا يوجد ثلاث مجموعات المشكلة انى اريد ان يدف من كل مجموعة حاجة وحدة بمعنى انه لا يضيف فى random من نفس المجموعة غير مرة واحدة

الناتج
vb4arb5
vb4
vv1

وليس
vb4arb5
vb4
vb4arb1
vv1
vb1
السلام عليكم

المثال غير مفهوم،
ياليت تراجع بنفسك المثال التي أنت وضعته من حيث العناصر الأساسية وعناصر النتيجة.
[attachment=13000]
لو كانت المجموعات مرتبة، وتعرف بداية و نهاية كل مجموعة ممكن ينفع معاك البرنامج ده
(31-01-17, 10:05 AM)مساعدة كتب : [ -> ]السلام عليكم

المثال غير مفهوم،
ياليت تراجع بنفسك المثال التي أنت وضعته من حيث العناصر الأساسية وعناصر النتيجة.

(31-01-17, 12:13 PM)noway كتب : [ -> ]لو كانت المجموعات مرتبة، وتعرف بداية و نهاية كل مجموعة ممكن ينفع معاك البرنامج ده
فى بعد الوقت يتم اضافة نفس item مرتين
هذا مثال عن كيف اضافة المجوعات
ما المقصود بالمجموعة؟

أرجو التوضيح لإيجاد الكود المناسب
(31-01-17, 02:52 PM)Mohamed20 كتب : [ -> ]
(31-01-17, 10:05 AM)مساعدة كتب : [ -> ]السلام عليكم

المثال غير مفهوم،
ياليت تراجع بنفسك المثال التي أنت وضعته من حيث العناصر الأساسية وعناصر النتيجة.

(31-01-17, 12:13 PM)noway كتب : [ -> ]لو كانت المجموعات مرتبة، وتعرف بداية و نهاية كل مجموعة ممكن ينفع معاك البرنامج ده
فى بعد الوقت يتم اضافة نفس item مرتين
هذا مثال عن كيف اضافة المجوعات
انت معدلتش على بداية و نهاية كل مجموعة
بداية و نهاية كل مجموعة انت المفروض بتغيرها على حسب مجموعتك
التكرار نتج عن عدم تعديلك لبداية و نهاية كل مجموعة اللى هما (a,b) على حسب list item
[attachment=13003] تم تعديلها على حسب بيانات list اللى انت بعتها
جربي الكود التالي في المشروع المرفق في المشاركة رقم 6#
كود :
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

   ' افراغ أداة النتائج
   ListBox2.Items.Clear()

   ' قراءة جميع العناصر
   Dim arr() As String = (From x As String In ListBox1.Items Distinct).ToArray

   ' قراءة انواع المجموعات
   Dim grps() As String = (From x As String In arr Select x.Split(".")(1) Distinct).ToArray

   Dim rnd As New Random ' استخدام كلاس العشوائيات
   ' التقاط عنصر عشوائي واحد من كل مجموعة وعرضها في أداة النتائج
   For Each itm In grps

       ' قراءة عناصر المجموعة
       Dim grp() As String = (From x As String In arr Where x.Split(".")(1).Equals(itm)).ToArray

       ' التقاط عنصر عشوائي واحد من المجموعة
       Dim v As String = grp(rnd.Next(0, grp.Length))

       ' إضافة العنصر في أداة النتائج
       ListBox2.Items.Add(v)

   Next

End Sub

حسب ما فهمته من المشروع المرفق في المشاركة رقم 6# أن المجموعة هي ما بعد النقطة لكل عنصر فتكون المجموعات:
Fs
Ee
Ae
De
(31-01-17, 03:28 PM)noway كتب : [ -> ]
(31-01-17, 02:52 PM)Mohamed20 كتب : [ -> ]
(31-01-17, 10:05 AM)مساعدة كتب : [ -> ]السلام عليكم

المثال غير مفهوم،
ياليت تراجع بنفسك المثال التي أنت وضعته من حيث العناصر الأساسية وعناصر النتيجة.

(31-01-17, 12:13 PM)noway كتب : [ -> ]لو كانت المجموعات مرتبة، وتعرف بداية و نهاية كل مجموعة ممكن ينفع معاك البرنامج ده
فى بعد الوقت يتم اضافة نفس item مرتين
هذا مثال عن كيف اضافة المجوعات
انت معدلتش على بداية و نهاية كل مجموعة
بداية و نهاية كل مجموعة انت المفروض بتغيرها على حسب مجموعتك
التكرار نتج عن عدم تعديلك لبداية و نهاية كل مجموعة اللى هما (a,b) على حسب list item
تم تعديلها على حسب بيانات list اللى انت بعتها
جزاك الله خير
(31-01-17, 04:18 PM)مساعدة كتب : [ -> ]جربي الكود التالي في المشروع المرفق في المشاركة رقم 6#
كود :
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

   ' افراغ أداة النتائج
   ListBox2.Items.Clear()

   ' قراءة جميع العناصر
   Dim arr() As String = (From x As String In ListBox1.Items Distinct).ToArray

   ' قراءة انواع المجموعات
   Dim grps() As String = (From x As String In arr Select x.Split(".")(1) Distinct).ToArray

   Dim rnd As New Random ' استخدام كلاس العشوائيات
   ' التقاط عنصر عشوائي واحد من كل مجموعة وعرضها في أداة النتائج
   For Each itm In grps

       ' قراءة عناصر المجموعة
       Dim grp() As String = (From x As String In arr Where x.Split(".")(1).Equals(itm)).ToArray

       ' التقاط عنصر عشوائي واحد من المجموعة
       Dim v As String = grp(rnd.Next(0, grp.Length))

       ' إضافة العنصر في أداة النتائج
       ListBox2.Items.Add(v)

   Next

End Sub

حسب ما فهمته من المشروع المرفق في المشاركة رقم 6# أن المجموعة هي ما بعد النقطة لكل عنصر فتكون المجموعات:
Fs
Ee
Ae
De

جزاك الله خير
تمام الكود يعمل تمام اذا كانت المجموعة كلاتى لاكن عن اضافة هذه المجموعة
1L.Water+1%
2L.Water+5%
3L.Water+15%
لم يعمل يتم اضافة نفس المجموعة كاملة