"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل الأرقام العشوائية في أجهزة الكمبيوتر عشوائية حقًا؟ إصدار JS

هل الأرقام العشوائية في أجهزة الكمبيوتر عشوائية حقًا؟ إصدار JS

نشر في 2025-04-13
تصفح:548

فهم العشوائية المحاكاة لـ JavaScript: غوص عميق في Math.Random ()

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

Is random numbers in computers are random at all? JS version

وهم العشوائية في الحوسبة

أجهزة الكمبيوتر ، في جوهرها ، تنفيذ التعليمات بالتتابع. لذا ، كيف ينتجون أرقامًا تبدو عشوائية؟

Is random numbers in computers are random at all? JS version

مولدات الأرقام العشوائية الزائفة (PRNGs)

"العشوائية" التي يقدمها Math.Random () ليست عشوائية حقًا ؛ انها العشوائية الزائفة. تستخدم مولدات الأرقام العشوائية الزائفة (PRNGs) خوارزميات رياضية لإنشاء تسلسل من الأرقام التي تظهر سلوكًا شبيهًا بعشوائية.

خصائص المفاتيح لـ prngs:

  1. قيمة البذور: قيمة بدء (البذرة) تبدأ تسلسل الأرقام. تملي البذرة التسلسل بأكمله.
  2. السلوك الحتمي: معرفة الخوارزمية والبذور يسمح بالتنبؤ بتسلسل الأرقام بأكمله.
  3. الدورية: prngs تكرر حتما تسلسلها بعد عدد محدد من التكرارات.

javaScript's Math.Random () عادةً ما تستخدم خوارزميات مثل XorShift أو Mersenne Twister (يعتمد الخوارزمية الدقيقة على محرك JavaScript ، مثل V8 في Chrome).

Is random numbers in computers are random at all? JS version

فك تشفير

Math.Random ()

Math.Random () هو مولد الرقم العشوائي الأساسي لـ JavaScript. يعمل على النحو التالي:

ينتج رقمًا عائمًا بين 0 (شامل) و 1 (حصريًا).

ومن الأمثلة على ذلك 0.2315601941492 ، 0.6874206142281 ، أو 0.9912760919023.

// Random number between 0 and 1
console.log(Math.random());

// Random integer between 0 and 9
console.log(Math.floor(Math.random() * 10));

// Random number between 1 and 100
console.log(Math.floor(Math.random() * 100)   1);
الأعمال الداخلية لـ

Math.Random ()

تتضمن العملية هذه الخطوات:

    يتم استخدام قيمة البذور الأولية. غالبًا ما يتم اشتقاق هذه البذور من ساعة النظام أو مصدرًا فريدًا آخر.
  1. تطبق الخوارزمية التحولات الرياضية على البذرة لإنشاء رقم جديد.
  2. يتم تقسيم هذا الرقم الجديد على ثابت كبير (للتطبيع بين 0 و 1).
  3. تتكرر هذه العملية لكل دعوة إلى
  4. Math.Random () ، وإنشاء الرقم التالي في التسلسل.
هذا التسلسل المتوقع (بالنظر إلى البذرة) يجعله مناسبًا للمحاكاة والألعاب ، ولكنه غير مناسب لتطبيقات التشفير.

لماذا تظل العشوائية الحقيقية بعيدة المنال

Math.Random () الخوارزمية الحتمية يعني أن تسلسله قابل للتكرار إذا كانت البذور والخوارزمية معروفة. بالنسبة للمهام الحساسة للأمان مثل التشفير ، تعد الأرقام العشوائية الآمنة المشفرة ضرورية ، والتي يتم إنشاؤها باستخدام API Crypto Web:

// Cryptographically secure random values
const array = new Uint32Array(5);
window.crypto.getRandomValues(array);
console.log(array);
تحدي العشوائية في الأنظمة الحتمية

Is random numbers in computers are random at all? JS version

الطبيعة الثنائية لأجهزة الكمبيوتر (0S و 1S) تصادم مع عدم اليقين المتأصل من العشوائية. لمحاكاة العشوائية بفعالية:

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

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

للأمان والعشوائية الحقيقية ، أساليب التشفير ضرورية. دعنا نقدر التفاعل المثير للاهتمام بين الحتمية والعشوائية المحاكاة التي تدفع الكود الخاص بنا!

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3