الرياضيات > الرياضيات
الأعداد العشوائية وشبه العشوائية
يقول سيدني بواتييه: "الحياة كما تبدو لي تُحدَّد من قبل عشوائية نقية"، فهل هذه المقولة صحيحة؟ وهل يمكن وجود أشياء عشوائية أو أرقام تُولَد عشوائيًّا بالفعل؟ سوف نشرح لماذا من الصعب والمثير للاهتمام الحصول على جهاز حاسوب قادر على توليد أرقام عشوائية حقيقية فعلًا.
تفيد الأرقام العشوائية في مجموعة متنوعة الأغراض والأهداف، مثل توليد مفاتيح لتشفير البيانات، والنمذجة ومحاكاة الظواهر المعقدة، واختيار عينات عشوائية من مجموعات البيانات الضخمة، وقد استُخدمَت من الناحية الجمالية في الأدب والموسيقا، وهي مشهورة الاستخدام في الألعاب والقمار أيضًا. فالرقم العشوائي هو أحد الأرقام التي يُحصَل عليها من مجموعة من القيم الممكنة، وكل رقم من المجموعة له احتمال متساوٍ مع البقية للحصول عليه، أي تتوزع احتمالاتها توزيعًا منتظمًا، فعند مناقشة سلسلة من الأرقام العشوائية يجب أن يكون كل عدد مُستخرَج مستقل إحصائيًّا عن الآخرين، أي إن الحصول على عدد ما لا يؤثر في احتمال الحصول على عدد آخر.
ومع ظهور الحواسيب، احتاج المبرمجون إلى وسيلة لاستحداث وتوليد العشوائية في برامج الحاسوب، وعلى رغم من ذلك، من الصعب إيجاد حاسوب يؤدي شيئًا مصادفة أو عشوائيًّا، لأن الحاسوب ينفذ التعليمات بصورة عمياء محددة له مسبقًا فيمكن التنبؤ بها تمامًا.
وهناك نوعان من الطرائق الرئيسية لتوليد الأرقام العشوائية باستخدام الحاسوب:
- مولدات أرقام شبه عشوائية (PRNGs – Pseudo Random Numbers Generators).
- مولدات أرقام عشوائية حقيقية (TRNGs – True Random Numbers Generators).
ولكل طريقة خصائص مختلفة تمامًا عن الأخرى ولكل منها إيجابياتها وسلبياتها، سنتحدث قليلًا عن النوعين:
توليد أرقام شبه عشوائية (PRNGs):
تدل كلمة "شبه" إلى أن الأرقام شبه العشوائية ليست عشوائية بالطريقة التي قد نتوقعها، على الأقل إذا اعتدنا عشوائية رمي حجر النرد أو بطاقات اليانصيب، فيكون أساسًا توليد أرقام شبه عشوائية عن طريق خوارزميات تستخدم صيغ رياضية أو تكون عبارة عن جداول محسوبة مسبقًا لإنتاج سلاسل من الأرقام التي تبدو عشوائية، أي بعبارة أخرى: تُولَّد الأعداد بطريقة محددة مسبقًا، وهي ليست عشوائية مطلقًا، فكل ما في الأمر أننا نحن البشر لا ندرك أن هناك علاقة رياضية تحكمها.
ومن الطرائق الجيدة لتوليد أرقام شبه عشوائية هي طريقة المطابقة الخطية التي تعتمد على معادلة خطية متقطعة، وهي تمثل واحدة من أقدم وأفضل الخوارزميات لتوليد مثل هذه الأعداد العشوائية، وقد أُجريَت بحوث كثيرة في نظرية توليد الأرقام شبه العشوائية، حتى أن الخوارزميات الحديثة لتوليد الأرقام شبه العشوائية الجيدة تكون الأرقام المولدة بها تبدو تمامًا أنها عشوائية (ولكنها ليست كذلك طبعًا).
والفرق الأساسي بين توليد أرقام شبه عشوائية وتوليد أرقام عشوائية حقيقية سهل الفهم إذا قارنَّا أرقام الحاسوب المولدة عشوائيًّا بالأرقام الناتجة عن رمي حجر النرد، ولأن توليد الأرقام شبه العشوائية يكون باستخدام المعادلات الرياضية أو القوائم المحسوبة مسبقًا، ونرمي حجر النرد عدة مرات وتسجيل النتائج وكلما رميته يمكنك الحصول على النتيجة التالية ضمن القائمة، ولكن قد لا يبدو الفرق واضحًا حتى الآن.
وتولد الأرقام شبه العشوائية بفعالية ولكنها محددة سلفًا، ولكن مولدات الأرقام العشوائية الحقيقة TRNGs تجعل الحاسوب يعمل بطريقة حجر النرد العشوائية تمامًا، وهي إحدى الطرائق الأكثر شيوعًا، أو يمكن استخدام بعض الظواهر الفيزيائية الأخرى التي يمكن إدخال نتائجها إلى الحاسوب بسهولة عن طريق بعض أجهزة القياس الفيزيائية، كدرجة الحرارة أو سرعة الرياح مثلًا (هذه الظواهر يمكن التنبؤ بها بطرق رياضية برمجية، ولكن لا يمكن تحديدها بدقة تامة أبدًا).
وتتسم PRNGs بالكفاءة، وهذا يعني أنها يمكن أن تنتج العديد من الأرقام في وقت قصير، وهي خاصية رائعة إذا كان التطبيق يحتاج إلى كثيرٍ من الأرقام، وتتسم بالحتمية أيضًا فأيُّ تسلسل معين من الأرقام يمكن أن يتكرر في وقت لاحق إذا كانت نقطة البداية في التسلسل معروفة، وتفيد هذه الخاصية إذا كنا بحاجة إلى تكرار نفس التسلسل من الأرقام مرة أخرى في مرحلة لاحقة ضمن التطبيق أو البرنامج.
وعادة ما تكون PRNGs دورية أيضًا، مما يعني أن التسلسل سوف يعيد نفسه في نهاية المطاف، وهي سمة نادرة مرغوب فيها.
وهذه الخصائص تجعل من PRNGs مناسبة للتطبيقات مثل المحاكاة ونمذجة التطبيقات إذ تتطلب كثير من الأرقام وتحتاج تكرار نفس التسلسل بعد فترة، وهي ليست مناسبة للتطبيقات التي من المهم أن تكون الأرقام غير متوقعة ولا يمكن التنبؤ بها، مثل تشفير البيانات والقمار.
وعلى الرغم من ذلك، يجب الإشارة إلى أنه رغم فعالية خوارزميات PRNGs الموجودة، لا تُستخدَم دائمًا؛ إذ إنها قد تعطينا نتائج سيئة، فمثلًا، برمجة مواقع باستخدام إحدى لغات البرمجة (وهي PHP): إذا كنا نستخدمها على منصة نظام لجنو/لينكس، هناك احتمال أن نكون موفقين بنتائج الأرقام العشوائية المولدة، أما إذا استخدمناها على منصة مايكروسوفت ويندوز، ربما سنجد أن الارقام العشوائية المولدة لم تصل إلى المستوى المطلوب كما هو موضح في التحليل البصري الذي أُجرِيَ عام 2008، وتظهر الصورة فرق التحليل البصري للغة PHP على منصة مايكروسوفت ويندوز مع موقع Random.org (وهو موقع يقدم خدمة توليد أعداد عشوائية حقيقة اعتمادًا على ظواهر فيزيائية)؛ إذ إن الطريقة الوحيدة لفحص فعالية توليد الأرقام العشوائية هو إنشاء صورة أو شكل مرئي للأرقام التي تنتجها، وذلك لأن البشر بارعون باكتشاف النماذج والروابط الشكلية في الصور والرسومات، ولكن لا يمكن عدُّ هذا النهج تحليلًا شاملًا بل هو تحليل غير رسمي، ولكنه يعطي طريقة سريعة للحصول على انطباع تقريبي لأداء المولِّدات.
والصورة التي على اليسار تظهر توليد أرقام عشوائية حقيقية من موقع Random.org، أما الصورة التي على اليمين تظهر تابع (rand) ضمن اللغة البرمجة PHP على منصة مايكروسوفت ويندوز الذي يُولِّد أرقامًا شبه عشوائية.
وتظهر الصورة الأرقام المولدة التي أنشأها PHP أنماطًا واضحة مقارنة مع الناتجة عن Random.org ذات مولد الأرقام العشوائية الحقيقية:
توليد أرقام عشوائية صحيحة (TRNGs):
فمقارنة مع PRNGs، تستخرج TRNGs العشوائية من الظواهر الفيزيائية وتدخلها إلى جهاز الحاسوب؛ إذ يمكننا تخيل ذلك على أنه حجر نرد متصل بالحاسوب، ولكن فعليًّا يستخدم البشرُ الظواهرَ الفيزيائية التي يكون إدخالها إلى الحاسوب أسهل من حجر النرد، وقد تكون الظاهرة الفيزيائية بسيطة، مثل التغييرات الصغيرة لحركة الفأرة على شاشة حاسوبك أو مقدار الوقت بين ضغطات مفاتيح الحاسوب.
ومن الناحية العملية، علينا أن نكون حذرين بخصوص اختيار المصدر، فمثلًا، من الصعب استخدام ضغطات المفاتيح بهذه الطريقة، لأنه غالبًا ما يُخزِّنها نظام تشغيل الحاسوب مؤقتًا، مما يعني أن عدة ضغطات للمفاتيح تُجَمَّع قبل أن تُرسَل إلى البرنامج الذي يكون بحالة انتظار؛ إذ ينتظر البرنامج ضغطات المفاتيح، فيبدو وكأنه قد ضُغِط على المفاتيح في وقت واحد تقريبًا، وهذا يؤدي إلى عدم وجود كثيرٍ من العشوائية في هذه العملية.
ومع ذلك، هناك العديد من الطرق الأخرى للحصول على العشوائية حقيقية ضمن جهاز الحاسوب. إن المصدر المشع هو واحد من الظواهر الفيزيائية الجيدة للاستخدام؛ إذ مع مرور الزمن يتحلل المصدر الإشعاعي وهي عملية فيزيائية عشوائية، لا يمكن التنبوء بها ولكن يكشف عنها بسهولة تامة وتُستخدَم لتغذية الحاسوب بالنتائج.
وإنَّ خدمة HotBits في Fourmilab في سويسرا هي مثال ممتاز على توليد أرقام عشوائية باستخدام هذه التقنية.
وهناك ظاهرة فيزيائية مناسبة أخرى وهي ضجيج الغلاف الجوي، والتي من السهل جدًّا التقاطها من الراديو العادي، وهو النهج المتبع من قبل موقع Random.org. ويمكن استخدام الضوضاء الناتجة في المكتب أو المختبر أيضًا، ولكن سينتج عنه نوع من نمطية ما، ومن ثم تصبح PRNGs.
وتساهم مروحة جهاز الحاسوب في إنتاج الضوضاء، ونظرًا أنَّ المروحة جهاز دوري، هناك احتمال أن تكون الضوضاء التي تنتجها غير عشوائية كضوضاء الغلاف الجوي.
ومن أروع الطرق المستخدمة سابقًا، النهج البصري المولد عن Lavarand ، وهو عبارة عن جهاز عتادي لتوليد الأرقام العشوائية صممته شركة سيليكون غرافيكس، ويلتقط الصور للنماذج المقدمة من المواد العائمة لـ Lava Lamb وهو مصباح يحتوي على النقط الملونة من الشمع داخل مصباح زجاجي مملوء بسائل واضح وشفاف، ويرتفع الشمع ويسقط ضمن المصباح حسب التغييرات كثافته بسبب الحرارة ناتجة عن الضوء الساطع الواقع تحت المصباح، ويستخرَج البيانات العشوائية من الصور وبستخدمها كبذرة (أي بداية سلسلة) لتوليد أرقام عشوائية حقيقية.
وهناك نهج آخر هو Java Entropy Pool الذي يجمع بتات عشوائية من مجموعة متنوعة من المصادر، بما فيها موقعي HotBits و Random.org.
فبغض النظر عن أي ظاهرة فيزيائية تُستخدَم، فإن عملية توليد الأرقام العشوائية الحقيقية تنطوي على قليل من التحديد، وتغيرات غير متوقعة في البيانات، فعلى سبيل المثال، يستخدم موقع HotBits تغييرات صغيرة في التأخير الزمني أثناء حدوث التحلل الإشعاعي، ويستخدم موقع Random.org تغييرات صغيرة في سعة ضوضاء الغلاف الجوي.
تختلف خصائص TRNGs تمامًا عن PRNGs، فعادة ما تكون TRNGs غير فعالة مقارنة مع PRGNs، وتأخذ وقتًا طويلًا بكثير لإنتاج الأرقام وهي غير حتمية، أي إن تسلسل معين من الأرقام لا يمكن إعادة إنتاجه مرة أخرى، على الرغم من أن نفس التسلسل قد يحدث عدة مرات عن طريق الصدفة فقط، ثم إن TRNGs غير دورية.
المقارنة بين PRNGs و TRNGs:
يلخص الجدول أدناه ما وصلنا إليه من الخصائص لهذين النوعين من المولدات الأرقام العشوائية:
هذه الخصائص تجعل TRNGs مناسبة لمجموعة من التطبيقات غير المناسبة لـ PRNGs، مثل تشفير البيانات والألعاب والقمار، وعلى العكس، الفعالية الضعيفة والطبيعة غير الحتمية لل TRNGs تجعلها أقل ملائمة للمحاكاة ونمذجة التطبيقات والتي -غالبًا- ما تتطلب بيانات أكثر من توليد أرقام من TRNG.
يحتوي الجدول الآتي ملخص للتطبيقات التي تحقق أفضل النتائج حسب نوع مولد الأرقام المستخدم:
أحداث كمومية أم نظم فوضوية؟
إنَّ إحدى الخصائص التي يتناقش بها منشئ TRNGs هي إذا ما كانت الظاهرة الفيزيائية المستخدمة هي ظاهرة كمية أم ظاهرة تسلك سلوكًا فوضويًّا، وهناك بعض الخلاف حول ما إذا كانت الظواهر الكمومية أفضل أم لا، ويأتي كل ذلك بناءً على معتقداتنا حول كيفية عمل الكون، والسؤال الرئيسي هو ما إذا كان الكون حتميًّا أم لا، أي: هل كل ما يحدث هو مقرر سلفًا وفق قوانين رياضية محددة؟
إنَّ الحتمية هي أحد المواضيع الصعبة، وتخضع للبحث الفلسفي المعمق، والمشكلة هي أبعد ما تكون عن وضوح المعالم كما قد يتصور البعض.
إنَّ ميكانيكا الكم هو فرع من الفيزياء النظرية، يصف الكون رياضيًّا من المستويات الذريّة ودون الذريّة. تسخدم مولًّدات الأرقام العشوائية المعتمدة على الفيزياء الكمومية بالحقيقة الجسيمات دون الذريّة التي تظهر بأنّها تتصرف على نحو عشوائي في ظروف معينة، ونحن نعرف أسباب هذه الظواهر، ولهذا يعتقد العديد من المراقبين أنها غير حتمية.
بالمقابل، النظم الفوضوية هي النظم التي تؤدي فيها التغييرات الصغيرة في الظروف الأولية إلى تغييرات جذرية في السلوك العام للنظام مثل نظم الطقس، فمن الممكن أن تكون قد سمعت بمصطلح أثر الفراشة، وهو مصطلح لفظي في النظريات الفيزيائية، ويشير هذا المصطلح في الأساس إلى أن الفروق الصغيرة في الحالة الأولى لنظام متحرك (ديناميكي) قد ينتج عنه في المدى البعيد فروقات كبيرة في تصرفات وسلوكيات هذا النظام، وهو ما عبر عنه مفسرو هذه النظرية على نحو تمثيلي بما معناه، أن رفرفة جناح فراشة في البرازيل قد يتسبب عنه فيضانات وأعاصير في أبعد الأماكن مثل ولاية تكساس بأمريكا.
ويجادل مؤيدو مولدات الأرقام العشوائية الكمية أن فيزياء الكم هي بطبيعتها غير حتمية، في حين أن النظم التي تحكمها الفيزياء الأخرى هي حتمية أساسًا.
إنَّ موضوع النقاش هو إذا ما كان المقياس حتمي أو لا حتمي، وننطلق من موقع Random.org مثالًا، هل يمكن القول أن ضوضاء الغلاف الجوي التي تُستخدَم كمصدر للأرقام في هذا الموقع هي عشوائية؟ ولكن ضوضاء الغلاف الجوي ظاهرة فيزيائية، فهي نظام حتمي. ومنه، إذا استطعنا معرفة ما يكفي من العمليات التي تسبب هذه الضوضاء (مثل العواصف الرعدية) فمن المحتمل التنبؤ بالأرقام التي يولدها موقع Random.org..
ولفعل ذلك، نحتاج لمعرفة موقع وسرعة كل جزيء يؤثر في الطقس على كوكب الأرض! وهذا بالطبع غير مجدي، وعدم دقة التنبؤات الجوية هو مثال جيد على مدى صعوبة إعطاء تقدير تقريبي لسلوك أنظمة الطقس. لهذا السبب، فإنّه من غير العملي التنبؤ بالأرقام العشوائية لموقع Random.org ، فهو غير حتمي. وهذا ينطبق على حالة مماثلة لمولدات الأرقام العشوائية المعتمدة على مصابيح اللافا Lava Lamps أيضًا.
وقد تعتقد الآن أنه نظرًا لوجود نزاع حول مدى ملاءمة الظواهر الفوضوية لتوليد العشوائية، فلماذا لا يُتمسَّك بفيزياء الكم لتوليدها؟ والتي تبدو أنها بمأمن. ولكن الأمر بالعكس، فإن مولدات الكم ليست بمأمن من النقد أيضًا، فالحتمية الثابتة (وهي وجهة نظر ترى أن الحتمية صحيحة) تشك أن سلوك الجسيمات دون الذرية هو سلوك عشوائي، إذ يدّعون أن الطريقة التي تتصرف بها هذه الجسيمات هي محددة سلفًا كما كل شيء آخر في الكون، وأحد الأسباب التي نعتقد أن هذه الجسيمات تتصرف عشوائيًّا هو أنه لا يوجد مقياس بشري استطاع أن يفسر تصرفاتها إلى حد الآن. من وجهة النظر هذه، لأن الأحداث دون الذريّة لديها بالفعل سبب مسبق أدت لتصرفاتها -ولكن نحن لا نفهم ذلك حتى الآن- فهي تبدو لنا أنها أحداث عشوائية.
وبالنسبة إلى الحتمية الثابتة، فإن فيزياء الكم ملائمة لتوليد الأرقام العشوائية كما ضوضاء الغلاف الجوي أو Lava Lamps.
هذه واحدة من الحجج، وهناك العديد منها، ويمكن تلخيص الموضوع بتعريف أكثر وضوحًا للعشوائية بأنها الأحداث التي لا يمكن التنبؤ بها من قبل البشر، سواءً الأحداث العشوائية التي تنبع من نظم الطقس التي لا يمكن التنبؤ بها، أم Lava Lamps أم الجسيمات دون الذرية، فهي جميعها نظريًّا كبيرة جدًّا. بينما مولدات الأرقام العشوائية الكمية بالتأكيد تولد أرقام عشوائية حقيقية، و تبدو جميعها تعادل النهج القائم على الأنظمة الديناميكية المعقدة..
المصدر: