الاثنين، 21 أبريل 2014

كيف يمكن لآلة منطقية كالحاسب إنشاء أرقام عشوائية؟

عزيزي القارئ لا بد وأن صادفت الكثير من البرامج التي تقوم بأستخدام وأنتاج أرقام عشوائية. خذ على سبيل المثال أي لعبة فيديو تحتوي على نرد أو بشكل أعم أي لعبة تعتمد على الحظ كألعاب الورق والألعاب التي تكون فيها حركات الخصم عشوائية وغيرها. طبعًا إستخدام الأرقام العشوائية ليست حصرًا على الألعاب فقط فلها إستخدامات عدة في التشفير وفي الإحصاء وفي أي وكل مجال يتطلب نتائج غير متوقعة. هذا يقودنا لتساؤل بسيط وهو كيف لآلة منطقية تتعامل بالحسابات الرياضية فقط أن تكون قادرة على إنشاء أرقام عشوائية؟ حقيقة الجواب المختصر هي لا تستطيع, حتى لو جلبت أقوى مئة معالج بالكون وجعلتها تعمل سواء فلن تقوم بإنشاء رقم عشوائي واحد!! لكن هناك طريقتين للمراوغة حول ذلك. الأولى تكون بربط الحاسب بجهاز يراقب حدث طبيعي عشوائي ثم يرسل النتائج للحاسب. مثلا تخيل معي آلة تلقي النرد مرارًا وترسل النتيجة لجهازك. توضحت الفكرة؟ حسنا هذا المثال غير عملي أو واقعي فقط للتوضيح تطبيق واقعي لها سيكون مثلًا بوضع مادة إشعاعية أمام عداد غايغر وربط العداد بالحاسب وبكل تأكيد بما أن التحلل الإشعاعي عشوائي فسيقوم عداد غايغر بإنشاء أعداد عشوائية. لكن لنعد لنا قليلًا لا أعتقد بأني أنا أو أنت نمتلك عداد غايغر بحاسوباتنا ولا آلة ترمي نرد أو حتى شيء من هذا القبيل. هذا يترك لنا الطريقة الثانية وهي المستخدمة عمومًا لأنها لا تتطلب أي إضافة في الجهاز لكن تكون باستخدام صيغة رياضية مع قيمة مبدئية -أو كما تسمى بالبذرة- وتنشئ أعداد عشوائية زائفة ليست حقيقةَ عشوائية لكن ستبدو لنا كذلك. هناك صيغات مختلفة وقد يستطيع أي شخص أن يصنع صيغته الخاصة مع مراعاة ثلاث شروط أولا عدم التكرار فلا تبدأ المتتالية الي تنشأها الصيغة الرياضية بتكرار نفسها بعد فترة ثانيا التوزيع الجيد فيكون ظهور الأرقام متقارب وأخيرا صعوبة توقع المتتالية بدون معرفة البذرة فأمكانية توقعها تشكل خطورة خصوصا لو استخدمت للتشفير. وكما تبين الصيغ الرياضية المستخدمة تحتاج إلى بذرة في البداية وغالبا ما يتم إستخدام الساعة أو التاريخ وقت استخدامها وبذلك يضمن إختلافات متتالية الأرقام في كل مرة يعمل به البرنامج. وبهذا أخذتم فكرة عامة عن كيفية إنتاج الإرقام عشوائية وكذلك يمكنكم الإستزادة بالمقالة التي استوحيت وكان معظم كلامي منها.


المقالة: Http:/computer.howstuffworks.com/question697.htm