توليد أرقام عشوائية زائفة باستخدام الأتمتة الخلوية: القاعدة 30

تعطي مولدات الأرقام العشوائية الأرقام أرقامًا حتمية ، ولكن عادةً ما تبدو هذه الأرقام غير دورية (عشوائية). في معظم الحالات على الأقل ، يحدث استخدام هذه الأرقام عادةً. يأخذ المولد قيمة أولية (من الناحية المثالية رقم عشوائي حقيقي) ويقوم بإنشاء تسلسل من الأرقام ، يعمل كدالة للقيمة الأولية و / أو الرقم السابق في التسلسل. هذه الأرقام هي عشوائية زائفة (وليست أرقامًا عشوائية حقيقية) نظرًا لحقيقة أنه إذا كانت القيمة الأولية المرسلة إلى المولد معروفة ، فيمكن إنشاء هذه الأرقام مرة أخرى خوارزمية. يتم إنشاء أرقام عشوائية حقيقية باستخدام أجهزة خاصة أو ظواهر فيزيائية معينة - تقلبات النبض في حجم الدم والضغط الجوي والضوضاء الحرارية والعمليات الكمية وما إلى ذلك.



هناك طرق عديدة لتوليد أرقام عشوائية زائفة. على سبيل المثال ، خوارزمية Blum - Blum - Shub ، الطريقة الوسطية الوسطية ، طريقة فيبوناتشي مع التأخيرات . سنتحدث اليوم عن توليد أرقام عشوائية باستخدام القاعدة 30 ، التي تستخدم نهجًا غامضًا ينطوي على استخدام نموذج أوتوماتيكي خلوي . اجتازت هذه الطريقة العديد من اختبارات الأرقام العشوائية القياسية واستخدمت في Mathematica لتوليد أعداد صحيحة عشوائية.

الأوتوماتيكية الخلوية


قبل أن نصل إلى موضوع القاعدة 30 ، دعونا نأخذ بعض الوقت في الأتمتة الخلوية. الأوتار الخلوي هو نموذج منفصل يتكون من شبكة منتظمة من الخلايا من أي بعد. يمكن أن تكون كل من الخلايا الشبكية في واحدة من مجموعة محدودة من الحالات. علاوة على ذلك ، لكل خلية ، يتم تعريف مفهوم مثل "الجوار". على سبيل المثال ، بالقرب من خلية معينة ، يمكن لجميع الخلايا الموجودة على مسافة لا تزيد عن 2 منها الدخول. هناك قواعد تحدد كيفية تفاعل الخلايا مع بعضها البعض والانتقال إلى الجيل التالي (الحالة). يتم تمثيل هذه القواعد بشكل أساسي بوظائف رياضية (قابلة للبرمجة) ، والتي تعتمد على الحالة الحالية للخلايا وحالة جيرانها.


وصف الألة

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


استنادا XOR-

إنسان الخلوية في العمل جاءت فكرة إنسان الخلوية حول في 1940s بفضل ستانيسلاف أولام و جون فون نيومان . وجدت الأتمتة الخلوية تطبيقًا في علوم الكمبيوتر والرياضيات والفيزياء وفي نظرية النظم المعقدة وفي علم الأحياء النظري وفي مشكلات نمذجة البنية المجهرية لوسائل الإعلام والمواد. في الثمانينيات ،أجرى ستيفن ولفرام دراسة منهجية لأوتون خلوي أحادي البعد (يطلق عليه أيضًا الأوتوماتيكية الخلوية الأولية) ، والتي تستند إليها القاعدة 30.

القاعدة 30


القاعدة 30 عبارة عن خلية خلوية أولية (أحادية البعد) يمكن أن تعيش فيها كل خلية في إحدى الحالتين النهائيتين: 0(خلايا حمراء في الشكل أدناه) و 1(خلايا سوداء). يتم تمثيل المنطقة المجاورة للخلية بأقرب جارين لها يقعان على يسارها ويمينها. تعتمد الحالة (الجيل) التالية للخلية على حالتها الحالية وعلى حالة جيرانها. يوضح الشكل التالي قواعد انتقال الخلايا إلى الحالة التالية.


القاعدة 30

يمكن تبسيط قواعد الانتقال إلى حالة جديدة من الخلايا على النحو التاليleft XOR (central OR right).

نخرج خلايا الأوتوماتون في شكل شبكة ثنائية الأبعاد ، كل صف منها يمثل جيلًا واحدًا (حالة). عندما يتم حساب الجيل التالي (حالة) الخلايا ، يتم عرضها أسفل آخر حالة معروفة. يحتوي كل صف على عدد محدود من الخلايا التي ، في النهاية ، "حلقة".


القاعدة 30 في العمل

ينشأ النمط أعلاه من الحالة الأولية (السطر 0) عندما يكون لخلية واحدة حالة1(سوداء) ويكون لجميع الخلايا المحيطة بها حالة0(حمراء). يتم حساب حالة الخلايا في الجيل التالي (السطر 1) وفقًا للقاعدة أعلاه. تمثل الشبكة العمودية الوقت ، وتمثل تقاطعات الصفوف والأعمدة حالة خلية معينة في مرحلة معينة من تطور النظام.


الجيل t والجيل t + 1

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

إنشاء رقم عشوائي زائف


كما ذكرنا سابقًا ، توضح القاعدة 30 سلوكًا غير منتظم وفوضوي. ونتيجة لذلك ، يؤدي تطبيقه إلى إنشاء أنماط معقدة ، وعلى ما يبدو ، أنماط عشوائية وفقًا لقواعد بسيطة ومحددة جيدًا. لإنشاء أرقام عشوائية باستخدام القاعدة 30 ، يتم استخدام العمود الشبكي المركزي ، الذي يتم من خلاله تحديد تسلسل من nالبتات العشوائية ، والتي يتم من خلالها إنشاء nالرقم العشوائي المطلوب . يتم إنشاء الرقم العشوائي التالي باستخدام nالبتات التالية من العمود.


إنشاء أرقام عشوائية باستخدام القاعدة 30

إذا بدأت دائمًا في تحديد الخلايا من السطر الأول ، فسيكون من الممكن دائمًا توقع تسلسل الأرقام الناتج. وهذا ليس ما نحتاجه. من أجل إنشاء أرقام عشوائية زائفة ، سنستخدم قيمة أولية عشوائية (على سبيل المثال ، الوقت الحالي) ، ونتخطى عدد الأسطر المقابلة ، وبعد ذلك نختار تسلسلات منnالأسطر وننشئ أرقامًا عشوائية بناءً عليها.

إن الأرقام العشوائية الزائفة التي تم إنشاؤها باستخدام القاعدة 30 ليست آمنة تشفيرًا ، ولكنها مناسبة للمحاكاة - حتى نستخدم قيمًا أولية غير مناسبة مثل0.

تتمثل إحدى المزايا الرئيسية لاستخدام القاعدة 30 لإنشاء أرقام عشوائية زائفة في أنه يمكنك إنشاء العديد من الأرقام العشوائية في الوضع المتوازي عن طريق تحديد العديد من الأعمدة بطول n بت بشكل عشوائي. فيما يلي مثال على تسلسل شبه عشوائي لأرقام 8 بت تم إنشاؤها بواسطة هذه الطريقة باستخدام القيمة الأولية 0: 220، 197، 147، 174، 117، 97، 149، 171، 240، 241.

بالإضافة إلى ذلك ، يمكن استخدام القيمة الأولية لتعيين الحالة الأولية للنموذج (السطر رقم 0). ونتيجة لذلك ، يمكن الحصول على أرقام عشوائية زائفة ببساطة عن طريق الاختيارnبت من العمود الأوسط ، بدءًا من الصف صفر. هذا النهج أكثر فعالية ، لكنه يعتمد بشكل كبير على جودة القيمة الأولية. يمكن أن تؤدي القيمة الأولية المختارة بشكل غير صحيح إلى ظهور أرقام متوقعة جيدًا. يمكن العثور على شرح لهذا النهج هنا .

القاعدة 30 في العالم الحقيقي


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

ملخص


إذا وجدت القاعدة 30 مثيرة للاهتمام ، فإنني أوصي بكتابة المحاكاة الخاصة بك باستخدام مكتبة p5 . يمكن تنفيذ هذه الخوارزمية في شكل عام إلى حد ما ، مما سيسمح لنفس البرنامج بإنشاء أنماط لقواعد مختلفة - 90 و 110 و 117 وما إلى ذلك. الأنماط التي تم إنشاؤها باستخدام قواعد مختلفة مثيرة للاهتمام للغاية. إذا كنت تريد ، يمكنك الانتقال إلى المستوى التالي. يمكنك توسيع النموذج إلى ثلاثة أبعاد واستكشاف تطور الأنماط. أعتقد أن البرمجة يمكن أن تجلب الكثير من المتعة إذا كان لها مكون مرئي.

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

القراء الأعزاء! ما هي مولدات الأرقام العشوائية الزائفة التي تستخدمها؟


All Articles