Ogurano  

العودة   Ogurano > مـتـفـرقـات > منتدى قاموس ريوكاي (ياباني -عربي) وفريق عمله


سؤال لأهل البرمجة والكمبيوتر

منتدى قاموس ريوكاي (ياباني -عربي) وفريق عمله


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





شكراً: 1,093
تم شكره 8,001 مرة في 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 على المشاركة المفيدة:
قديم 08-25-2010, 02:38 PM   #2
البلعسي
المدير العام

 
الصورة الرمزية البلعسي
الملف الشخصي





شكراً: 1,007
تم شكره 2,606 مرة في 674 مشاركة
افتراضي رد: سؤال لأهل البرمجة والكمبيوتر

يبدو هذا هو الحل المنطقي لأنه من الواجب أن تتم عمل فحص الخانات في array ذات الحجم المطلوب

ولكن في حالة الأرقام الكبيره ممكن نقسم الراندوم

مثلا لو لدينا 1000 رقم ونريد أن نخرج منه 10 أرقام
نقسم الراندوم بحيث يكون من 1- 100 يخرج رقم عشوائي ضمن هذا النطاق للخانة الأولى ومن 101 - 200 يخرج رقم عشوائي ضمن هذا النطاق للخانة الثانية
وبالتالي أرتحت من مسألة أن يشيك على الخانات لأنك ضمنت أن الرقم لن يتكرر في إي خانة
طبعا هذا لا يسمى راندوم حقيقي ^^" ولكن ربما قد يكون حل ^_^
توقيـع » البلعسي
كف ياضميري عن نداء الوطن ..
الموت ها هنا ..الموت ها هناك ..
لم يبق ياضميري بعد الموت إلا الشجن

---
البلعسي غير متواجد حالياً   رد مع اقتباس
الأعضاء الذين قالوا شكراً لـ البلعسي على المشاركة المفيدة:
قديم 08-25-2010, 02:54 PM   #3
Haroon
 
الصورة الرمزية Haroon
الملف الشخصي





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

طريقتك رائعة أخي أحمد، وهي بالفعل مفيدة مع أنه ليس راندوم حقيقي... لكن السؤال، هل ذلك يقلل من الخطوات التي سيعملها الجهاز؟، يجب أن تقوم بعمليات حسابية لتقسيم المجموعات وهذه تزيد من عدد العمليات الكلية...

هل من طريقة أكثر أبداعاً..
توقيـع » Haroon
Haroon غير متواجد حالياً   رد مع اقتباس
قديم 08-25-2010, 04:10 PM   #4
Wahabi
زائر
 
الصورة الرمزية Wahabi
الملف الشخصي




شكراً: 75
تم شكره 242 مرة في 112 مشاركة
افتراضي رد: سؤال لأهل البرمجة والكمبيوتر

ما أكبر قيمة ممكن قد يصل لها الرقم العشوائى؟
و ما هو أكبر عدد قد تحتاجه من الأرقام العشوائية؟
Wahabi غير متواجد حالياً   رد مع اقتباس
قديم 08-26-2010, 08:26 AM   #5
カリム
مدير

 
الصورة الرمزية カリム
الملف الشخصي





شكراً: 1,640
تم شكره 1,670 مرة في 443 مشاركة
إرسال رسالة عبر مراسل MSN إلى カリム إرسال رسالة عبر Skype إلى カリム
افتراضي رد: سؤال لأهل البرمجة والكمبيوتر

يبدو أن الحلين السابقين جيدين، حاولت أن أعد خوارزم يعتمد على طريقة dichotomous search ولكنه أصعب مما ظننت كما أن عدد العمليات الحسابية فيه كثيرة لذا الحل الأمثل حاليا في حالة أن احتمال إيجاد نفس الرقم ضعيف هو الحل الأول أما في حالة العكس فإن حل الأخ أحمد يفي بالغرض.

طبعا هذا السؤال أرعبني جدا لأن أكره درس لي في البرمجة كان algorithm time complexity وكنت أتمنى ألا يأتي في الامتحان لأني لم أفهم ذلك الدرس جيدا.

على كل، إن وجدت حلا أفضل فسأضعه هنا.
توقيـع » カリム
帰った
頑張りますよ

http://labs.ogurano.net/
カリム غير متواجد حالياً   رد مع اقتباس
قديم 08-26-2010, 10:59 AM   #6
Haroon
 
الصورة الرمزية Haroon
الملف الشخصي





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

ما رأيكم بهذا الكود، وضعت لكم ملفاً تنفيذياً تستطيعون فيه إختباره في الملفات المرفقة، ؟؟؟

Dim range As Integer = 50

Dim numberOfRec As Integer = 10

If IsNumeric(TextBox1.Text.Trim) Then
range = CInt(TextBox1.Text.Trim)
End If

If IsNumeric(TextBox2.Text.Trim) Then
numberOfRec = CInt(TextBox2.Text.Trim)
End If


Dim Rand As New Random(System.Environment.TickCount)
Dim myArray(range - 1), temp, index, position As Integer

For position = 0 To range - 1
myArray(position) = position + 1
Next

For position = 0 To range - 1
index = Rand.Next(position, range)
temp = myArray(position)
myArray(position) = myArray(index)
myArray(index) = temp
Next

lstResult.Items.Clear()

For i As Integer = 0 To numberOfRec - 1
lstResult.Items.Add(myArray(i))
Next

الملفات المرفقة
نوع الملف: rar random.rar (6.2 كيلوبايت, المشاهدات 246)
توقيـع » Haroon
Haroon غير متواجد حالياً   رد مع اقتباس
2 أعضاء قالوا شكراً لـ Haroon على المشاركة المفيدة:
قديم 08-26-2010, 11:36 AM   #7
カリム
مدير

 
الصورة الرمزية カリム
الملف الشخصي





شكراً: 1,640
تم شكره 1,670 مرة في 443 مشاركة
إرسال رسالة عبر مراسل MSN إلى カリム إرسال رسالة عبر Skype إلى カリム
افتراضي رد: سؤال لأهل البرمجة والكمبيوتر

لقد قضيت علي بهذا الكود الأخير
فكرة رائعة أن تقوم بإعادة خلط الأعداد داخل جدول مرتب، فبهذا ستضمن عدم تكرار العدد مرتين ثم تأخذ الأعداد الأولى في الجدول.

أنا أستسلم لأنه حقا إبداع
توقيـع » カリム
帰った
頑張りますよ

http://labs.ogurano.net/
カリム غير متواجد حالياً   رد مع اقتباس
2 أعضاء قالوا شكراً لـ カリム على المشاركة المفيدة:
قديم 08-26-2010, 03:42 PM   #8
Haroon
 
الصورة الرمزية Haroon
الملف الشخصي





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

اذكر بأنك أخي عبدالكريم قمت بعمل كلاس لي لإستخدامها في القاموس، هل تذكرها؟؟ هل لا زالت موجودة لديك، قمت بتحويلها الى dll ولكنني أريد ال Native code لها، لذلك أرجو أن ترفعها لي إن كانت لا زالت عندك.
توقيـع » Haroon
Haroon غير متواجد حالياً   رد مع اقتباس
الأعضاء الذين قالوا شكراً لـ Haroon على المشاركة المفيدة:
قديم 08-26-2010, 04:17 PM   #9
カリム
مدير

 
الصورة الرمزية カリム
الملف الشخصي





شكراً: 1,640
تم شكره 1,670 مرة في 443 مشاركة
إرسال رسالة عبر مراسل MSN إلى カリム إرسال رسالة عبر Skype إلى カリム
افتراضي رد: سؤال لأهل البرمجة والكمبيوتر

اقتباس:
هل لا زالت موجودة لدي
في الحقيقة هي مازالت هنا في المنتدى، الحمد لله أني لم أزل الرسالة التي تحتوي على الرابط
ها هو الرابط

http://ogurano.net/fileuploader\01\s...4151744190.rar

شكرا
توقيـع » カリム
帰った
頑張りますよ

http://labs.ogurano.net/
カリム غير متواجد حالياً   رد مع اقتباس
الأعضاء الذين قالوا شكراً لـ カリム على المشاركة المفيدة:
إضافة رد

مواقع النشر (المفضلة)

الكلمات الدليلية (Tags - تاق )
لللل, البرمجة, سؤال, والكمبيوتر

أدوات الموضوع
طريقة عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

RSS RSS 2.0 XML MAP HTML
-------------------------------------------------
طـوكـيـو الآن

الساعة الآن 03:36 PM.

هارون السوالقة
جميع الحقوق محفوظة (هارون السوالقة)
نوافذ على اليابان
Saito - مدونة اليابان アラビア語ブログ wikipedia - بوابة اليابان NHK WORLD - arabic مدونة اللغة اليابانية مدونة عشاق اليابان