السؤال المطروح الآن هو:
في الحقيقة .. لا يوجد شيء اسمه (العضوائية) لأن الكون لا بمكنه الاستمرار
لأكثر من مليار عام و الأرض لأكثر من 60 مليون عام إذا كان هناك شيء
الفراشة) تم تحسيده في فيلم أجني بنفس الاسم و هو
شيء صغير جذدا جدا .. في الماضي و لو كان بحرد
لو طبقنا هذا التأثير على (كلمة عشوائي) لوجدنا أنه لن يصبح الكون كوناً إذا
دالة رياضية حاول العالم (ليمان) أن يربط فيها بين عدد الأرقام الأولية في
مجموعة معينة من الأرقام تبداً بالصفر و بين ثماية أو آخر رقم في هذه المجموعة.
الدارس لمذه الدالة يجد أول الأمر أنما أرقام عشوائية و لكن إصرار العلماء على
عدم اقتناع العلماء أصلاً بوجود العشوائية.
و يرى البعض أن كلمة "عشوائي” هي مرادف لكلمة "مجهول" فنحن عندما
نعجز عن تفسير ظاهرة معينة نقول أنما عشوائية .. مثلا:النرد" فهناك من يعتقد
البارمترات فيمكننا حينها توقع نتيجة الرمي .. فمثلا .. لو عرفنا كتلة الترد
سنحصل عليه بعد رمية !!!
2-لماذا نحتاج لتوليد الأرقام العشوائية ؟
تُستخدم الأعداد العشوائية في الكثير من الأمور .. نذكر منها على سبيل المثال لا
8-علم الإحتمالات.
©-الهندسة العكسية.
-بروتوكولات الإتصال,مثل بروتوكول ©10.
8-علم الإحتمالات:
كيف ؟؟
الأمر بسيبذ للغاية .. كلما ما علينا فعله هو ترقيم هذه الكرات و أخذ
عدد عضوائي من بين الأعداد المتاحة .. لاحظ أن كل رقم تقابله كرة ما بع
.. فإن الألعاب بال خصب للبحث عن خوارزمية تولد أرقام
فيمكنه أن يعيد نفس اللعبة بعدة أشكال !!! لنأخذ مثال:
حين نلعب مثلا لعبة 1106-1800" فالنجمة تظهر كل مرة في مكان عضشواني
.. وهذا مما يجعل اللعبة أكثر إثارة.
نفس الفكرة يمكننا تطبيقها في الكثير من الألعاب الأخرى ...
©-الهندسة العكسية:
أما في بحال الهندسة العكسية فنحن نحتاجها مثلا من أجل بربحة "الكيجن".
هناك طرق كثيرة لحماية البرامج و من أسهلها استخدام أرقام سرية معينة يتم
على اسم المستخدم أو بريده الالكتروني أو الرقم التسلسلي للجهاز أو أي معلومة
أخرى أو مجموعة من هذه اللعلومات معا!! و عادة تحصل على هذا الرقم عند
شراء المنتج من الشركة و تعطيهم بياناتك فيعطونك الرقم السري (السيريال)
الذي يتيح لك استخدام البرنامج بشكل كامل.
نأي حاليا لكيفية كسر هذه الحماية .. وأشهر طريقة هي استخدام "الكيجين".
و لكن ما هو "الكيجين" ؟؟؟
الكيجين ((6686: هو اختصار ل :8616:8101 166 أي مولد المفاتيح و هو
عبارة عن برنامج صغير يطلب منك نفس المعلومة الي تعتمد عليها الشركة في
إعطاء الرقم السري !! و يولد لك الرقم الذي تستطيع فتح البرنامج به .. عادة
ما يستطيع بعض المبربحين معرفة الخوارزميات الي تعتمد عليها هذه الشركات في
توليد الأرقام السرية و ينشئون برنامج ليستخدمه الناس!! و طريقته سهلة (نسبيا)
فهي مثلا تطلب منك الاسم الموجود في جهازك و من ثم تعطيك الرقم الذي
تنسخه في البرنامج فيعمل معك بشكل كامل.
نعود مرة أخرى لموضوعنا السابق و هو فائدة الأعداد العشوائية من أجل برمحة
الكيجين .. تخيل أن خوارزمية التحقق من سيريال برنامج ما .. تخضع للشروط
الشرط الأول:
السيريال يجب أن يتكون من 10 حروف.
الشرط الثاي:
يقارن الحرف الأول مع هر والحرف الثامن مع 8 والحرف العاشر مع 1
يحقق الشروط .. ليكن هذا السيريال مثلا: 10118-11757500
هذا السيريال يحقق الخوارزمية ولكن يبقى السؤال هو:
لماذا لا نكتفي بنشر سيريال واحد يحقق الخوارزمية.
السبب هو : ثلا ..
من ثم قام شخص آخر بسرقة هذا السيريال وقال بأنه ملك له !!!
من نصدق ؟9؟ أكيد ستصدق من فهم الخوارزمية.
لذلك وجب علينا بربحة "الكيجن" الذي سيولد عدة سيريالات تحقق خوارزمية
الكلام السابق يكون صحيحا إذا كان الشخص لا يعرف الخوارزمية أما إذا كان
بالمناسبة فإن الأعداد العشوائية تستخدم بشكل كبير في خوارزميات التشفير لأن
طريقة عملها !!!
*)عادة ما تكون الخوارزميات الن تتعلق بالكيجين معقدة جدا جدا .. بحيث
يكون من الصعب كسرها .. ولكن هذا لا يمنع البعض من استخدام مهاراته
البرجحية (للأسف الشديد) من أجل كسر هذه الخوارزميات.
لست "قاتلا مأجور" إنما أردت (فقط) توضيح بعض المسائل الي تنعلق بالأعداد
0-بروتوكولات الإتصال,مثل بروتوكول ©10.
الحصول على أرقام عشوائية أمر مهم جدا في علوم الحاسوب خاصة في بحال
حزمة يسمح لطرف الإتصال الآخر بترتيب الحزم عند وصوطا و بمعرفة ما ضاع
منها و إعادة إرساله .. و هناك هجوم كلاسيكي يتمكن خلاله طرف ثالث من
الدخول في الإتصال و تحويله إذا كان بإمكانه التكهن بالرقم التسلسلي المستعمل
صممت كي تكون محددة في عملها (©06]6:71110190) و بالتالي أي دالة رياضية
تستخدم لتوليد أرقام عشوائية سيتم كسرها و لو طالت دورتًا .. لذلك عندما
يحتاج برنامج ما إلى أرقام عشوائية تصلح في عمليات
(5© 101100 18110010 81806 070010 ) فيجب تزويد الحاسوب ببطاقة خاصة
تقوم بإنتاج هذه الأعداد انطلاقا من "ظاهرة فيزيائية عشوائية" و ليس "دوال
رياضية" و نظام 11663517 يدعم هذا النوع من العتاد.
3-كيف يمكننا توليد أرقام عشوائية
يمكن توليد الأرقام العشوائية بأكثر من (قانون,خوارزمية,طريقة) و كلما كان
القانون أكثر تعقيدا يكون العدد أقرب ما يكون للعشوائية ..
المستحيل (بالنسبة للمستخدم) معرفة سلوك الدالة ِ
عندما نقوم بإنشاء دالة عشوائية ترجع قيمة العدد الُدخل قسمة على 2 !!!
الآن أصبح من السهل اكتشاف سلوك هذه الدالة .. فعندما يقوم المستخدم
بتشغيل هذه الدالة 10 مرات (مثلا) سيتمكن من استنتاج سلوك هذه الدالة
بكل سهولة .. هنا يكمن احتياجنا في قانون رياضي يكون معقد بعض الشيء ..
ما يربك المستخدم أثنَاءٍ محاولته معرفة سلوك الدالة.
الكلام السابق يكون أكثر دقة إذا كان العدد العشوائي عبارة عن عدد "كسري"
العشوائي عبارة عن عدد صحيح .. فسيكون الكلام السابق غير دقيق تماما ! لأن
المستخدم أصبح بإمكانه اكتشاف سلوك الدالة الي تولد الأعداد العشوائية !!!
فيمكنه (مثلا توليد 1000 عدد بين 1 و 10 مما يقوده إلى استنتاج سلوك
الدالة .. وهكذا .. يعن يختار بحال ضيق ويقوم بتوليد الكثير من الأعداد
العشوائية في لجال الُختار .. مُستنتجا الملامح الأولى لسلوك هذه الدالة.
الآن .. سنقوم باستعمال دالة تقوم بتوليد رقم عشوائي.
الدالة الي سنستعملها هي الدالة 18010 وتوجد في المكتبة تازل8]0» , هذه الدالة
تتبع خوارزمية مُعقدة بعض الشيء !!! مما يجعل عملية تنبع الرقم الولد من طرف
الدالة "عملية صعبة" إن لم تكن "مستحيلة" , هذا في حالة استخدام البذرة أما إذا
لم نستخدمها فستقوم الدالة بتوليد أرقام عشوائية "شبه منتظمة" و السبب هو أنما
تتبع خوارزمية ثابتة لتوليد الأرقام العشوائية مثلا
ضيق للأعداد الصحيحة و قام بتوليد الكثير من الأرقام العشوائية ثم قام بتكرار
العملية عدة مرات .. فسيلاحظ انتظام هذه الأعداد بشكل أو بآخر !!!
إذا قام المستخدم بأخذ بجال
حسب البذرة (6660) والبذرة عبارة عن عدد صحيح , هذه البذرة يجب أن
تكون متغيرة في كل وقت .. لكي يكون العدد المولد "شبه عشوائي” , و عادة
ما يستخدم المبرمحون "الزمن" كبذرة للدالة 808010 , بعن تُسند قيمة الثواني إلى
الدالة 880:10 فنحصل على رقم عشوائي و عندما تُسند قيمة الزمن مرة أخرى
سنحصل على عدد عشوائي آخر ! لأن الوقت يتغير من لحظة إلى أخرى.
و لكن كيف يمكننا إسناد قيمة الثواني ؟
يتم ذلك باستخدام الدالة 11116 الموجودة في المكتبة 11116ا» , هذه الدالة تستقبل
الوسيط المعدوم ,آ/آنا11 أو يمكن أن نكتب العدد 0 ولكني أفضل الكتابة
الدالة 01106 تستقبل الوسيط ,1011.1 و تعيد عدد الثوانيٍ الي مرت من الساعة:
0 قي ليوم 1 جانفي في عام 1970.
انظر الكود:
م عسفط لوق , 5 عنصت قمصمع ع5 و10
و يمكننا أن نكتب كلمة ] 11016 بدل الكلمة ع100 لأن المكتبة 001116 تحتوي
على المتغير )01116 المعرف كما يلي:
ب_عست وصمة قمعم ع تر
57 86866ع120 وص1قنا
"عع يهم " ) ع 5ئرع
7 صعسطوع
لاحظ أننا قمنا أولا بتجهيز الدالة 98110 عن طريق البذرة (86680) و من ثم قمنا
بإسناد القيمة الي تعيدها الدالة 181108 إلى المتغير 11.
حسنا .. الآن فهمنا كيفية توليد رقم عشوائي باستخدام الدالة 1800 و بالإعتماد
على الدالة 800010 الي تحتاج إلى البذرة 8660 و الي عادة ما تكون "الزمن” أو
لنقل :عدد الفواني المُعاد من طرف الدالة 100006
الآن يمكننا استنتاج ليد أرقام عشوائية محصورة بين عدد معين يُدخله
المستخدم و الصفر .. كيف ذلك؟
كل ما في الأمر أننا سنستخدم الرمز 96 و الذي يعن باقي القسمة و يخضع
للقانون التالي:
باقي قسمة عدد 8 على 5 يكون دائما أصغر تماما من ا و أكبر أو يساوي 0
لنسمي 1 باقي قسمة 8 على تآ و0 ناتج القسمة , إذا:1 + 50 8.2
حيث :72 عضور بين 0 رط
نمع 020880566 وصتقنا
7 مماط عع
و يمكننا توليد العديد من الأعداد العشوائية باستخدام الحلقة 101
طيب .. كيف يمكننا توليد أرقام عشوائية محصورة بين عددين يُدخلهما
المستخدم ؟؟؟
قلنا سابق أنه يجب علينا إتباع قانون معقد بعض الشي
. و القانون الذي