🎲

مولد الأرقام العشوائية

ولّد أرقاماً عشوائية حقيقية بنطاقات مخصصة — مدعومة بعشوائية تشفيرية.

🎲

حدد نطاقك واضغط توليد.

يستخدم مولد العشوائية التشفيري في متصفحك — غير متوقع فعلاً وبدون انحياز.

معظم مولّدات الأرقام العشوائية على الويب ليست عشوائية بما يكفي لأي شيء مهم. تستخدم `Math.random()`، السريعة والمريحة والقابلة للتنبؤ تمامًا لمن يفهم الخوارزمية — بمخرجات كافية، يمكن إعادة بناء قيمها المستقبلية. هذا مقبول لخلط قائمة تشغيل ومُقصٍ لسحب جوائز. يستخدم هذا المولّد `crypto.getRandomValues()`، مصدر المتصفح الآمن تشفيريًا، ويتعامل بشكل صحيح مع مشكلة انحياز الباقي التي تُحرّف معظم التنفيذات الساذجة بصمت. إن كنت تختار فائزًا، أو تولّد إدخال يانصيب، أو تفعل أي شيء يمكن التحقق من عدالته، فالتمييز هو كل المقصود.

كيف يعمل المولّد

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

الطريقة

الساذج (منحاز): n = Math.floor(Math.random() * range) + min غير المنحاز (أخذ عينات بالرفض): limit = floor(2³² ÷ range) × range كرّر: x = قيمة عشوائية تشفيرية 32 بت حتى x < limit n = (x mod range) + min

الانحياز خفيّ بما يكفي ليُغفَل دائمًا تقريبًا. إن أخذت قيمة عشوائية 32 بت وطبّقت باقي القسمة على 3، لا ينقسم النطاق بالتساوي على 2³²، فتظهر القيم الأولى في النطاق أكثر قليلًا من الأخيرة. لرمية نرد الانحراف غير مرئي. وليانصيب يُسحب ملايين المرات، هو قابل للقياس والاستغلال. أخذ العينات بالرفض يُصلحه برمي القيم التي تُسبّب الاختلال والسحب مجددًا.

ما يجب معرفته عن العشوائية

  • 1`Math.random()` غير مناسبة لأي شيء ذي عواقب. إنها مولّد شبه عشوائي مُبذَّر من مصدر قابل للتنبؤ، والمتصفحات لا تُقدّم أي ضمانات عن جودتها. أُثبت مرارًا أن ملاحظة حفنة مخرجات تتيح إعادة بناء الحالة الداخلية والتنبؤ بكل القيم المستقبلية.
  • 2العشوائية الحقيقية تبدو أقل عشوائية مما يتوقع الناس. التسلسلات الحقيقية تحتوي سلاسل — ست صور متتالية تظهر في نحو 1.6% من تسلسلات 100 رمية. حين يفبرك الناس بيانات «عشوائية» يدويًا يتجنّبون هذه التجمّعات، وهكذا بالضبط يكشف محقّقو الاحتيال النتائج المفبركة.
  • 3للسحوبات العامة، وثّق العملية قبل السحب. طريقة قابلة للتحقق — إعلان النطاق والطابع الزمني ومصدر البذرة مسبقًا — هي ما يجعل النتيجة قابلة للدفاع. «استخدمنا مولّدًا عشوائيًا» ليس دليلًا على شيء؛ لا يستطيع المشاركون تدقيق ادّعاء.
  • 4أخذ العينات دون إحلال يعني أن كل سحبة تُغيّر الاحتمالات. اختيار 6 أرقام من 49 دون تكرار مسألة احتمالية مختلفة عن 6 سحبات مستقلة. التمييز يهم لليانصيب والقرعات، وهذا المولّد يتعامل مع كليهما بشكل صحيح حسب إعداد التكرار لديك.
  • 5النرد والعملات والأوراق مصادر عشوائية فيزيائية وهي جيدة بشكل مفاجئ. نرد مصنوع جيدًا لا يمكن التنبؤ به فعلًا بطريقة لا يكونها مولّد برمجي سيّئ البذر. لا تزال الكازينوهات تستخدم الخلط الفيزيائي لهذا السبب بالضبط.

الأسئلة الشائعة

هل هذه الأرقام عشوائية حقًا؟

إنها شبه عشوائية آمنة تشفيريًا، وهو أقوى ضمان متاح في متصفح. يسحب المولّد من `crypto.getRandomValues()`، المُبذَّر بإنتروبيا نظام التشغيل — مصادر كتوقيت العتاد وتذبذب المقاطعات. وخلافًا لـ`Math.random()`، لا يمكن التنبؤ بمخرجاته من القيم السابقة. لأي غرض عملي بما فيه سحوبات الجوائز، هذا كافٍ.

ما انحياز الباقي ولماذا يهم؟

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

هل أستطيع استخدام هذا لسحب جائزة أو هدية؟

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

لماذا يظهر نفس الرقم مرتين متتاليتين؟

لأن هذا ما تفعله العشوائية. كل سحبة مستقلة، فمع السماح بالتكرارات، التكرارات متوقعة — في 10 سحبات من 1 إلى 10، هناك احتمال نحو 65% لتكرار واحد على الأقل، ما يفاجئ الجميع تقريبًا. مولّد يتجنّب التكرارات ليبدو أعشوائيًا سيكون أقل عشوائية بشكل قابل للقياس. إن احتجت قيمًا فريدة، أطفئ التكرارات.

هل تُرسَل بياناتي إلى أي مكان؟

لا. التوليد يحدث كليًا في متصفحك عبر واجهة التشفير المدمجة، ولا تُرسَل أو تُخزَّن أي أرقام أو إعدادات أو نتائج. قطع الإنترنت لا يؤثر على المولّد، لأنه لا يوجد خادم معني في أي مرحلة.