عرض مشاركة واحدة
قديم 08-25-2010, 02:18 PM   #1
Haroon
 
الصورة الرمزية Haroon
الملف الشخصي





شكراً: 1,093
تم شكره 8,002 مرة في 1,575 مشاركة
افتراضي سؤال لأهل البرمجة والكمبيوتر

سؤال
لنفرض أنه عندي x من الأرقام (مثلاً من 1 إلى 50)، ما هو اللوغارثم الأفضل والأقصر لأخذ 5 أرقام منها بصورة عشوائية بحيث لا يكون هناك عندنا أي رقم مكرر، مثلاً: 4، 45، 27، 9، 32
هذا سؤال لمحمد نور، وعبد الكريم والبلعسي...
يوجد حل ولكنني لست مقتنعاً بأنه الأفضل وهو:
عمل array من خمسة خانات
array(4)

أخذ رقم عشوائي من 1 الى 50 ونضعه في ال array
عمل loop من 1 الى 4 وفي داخله نعمل
random.next (1,51)

نفحص عن طريق bool فإن كان رقم الراندم غير موجود في الarray فإننا نقوم بإضافتها لها، وبخلاف ذلك نعيد عمل الراندوم، وهكذا حتى نصل الى خمسة أرقام...
ربما هذه العملية ممتازة ولا بأس بها في مثالنا أعلاه وربما ستأخذ 1 من عشرة ملايين من الثانية في الكمبيوتر، ولكن ماذا لو أردنا مثلاً أخذ رقماً كبيراً من الأرقام (أي ليس فقط 5 أرقام)، كلما زادت الأرقام كلما ضاعف هذا من إحتمالية أن يكون الرقم في ال array، أليس كذلك؟؟؟

هل يوجد عندكم يا فقهاء أي حل عبقري؟
أريد كوداً فعلاً يكون الأقل وطأة على الكمبيوتر...
توقيـع » Haroon
Haroon غير متواجد حالياً   رد مع اقتباس
الأعضاء الذين قالوا شكراً لـ Haroon على المشاركة المفيدة: