Command Palette

Search for a command to run...

كيفية إنشاء أرقام عشوائية عبر الإنترنت: النطاقات والمجموعات الفريدة ومتى تكون العشوائية مهمة بالفعل

كيفية إنشاء أرقام عشوائية عبر الإنترنت: النطاقات والمجموعات الفريدة ومتى تكون العشوائية مهمة بالفعل

T
Toolz Team
|Aug 23, 2026|15 دقيقة قراءة

جزء من مجموعة مولدات الإنقاذ

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

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

ليرة تركية؛DR: يقوم مولد الأرقام العشوائية بسحب القيم من النطاق الذي تحدده. قم بتعيين الحد الأدنى والحد الأقصى، واختر عدد الأرقام التي تريدها، واختر الأعداد الصحيحة أو العشرية. قم بتشغيل فريد فقط عندما لا تتكرر أي قيمة، وهو ما تريده في اليانصيب والسحوبات وأخذ العينات دون استبدال. يعمل مولد Toolz.dev بالكامل في متصفحك ويفضل واجهة برمجة تطبيقات Web Crypto بسبب عشوائيتها، لذلك لا يترك أي شيء تقوم بإنشائه جهازك على الإطلاق.

ماذا يفعل مولد الأرقام العشوائية بالفعل؟

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

الجزء المثير للاهتمام هو الكلمة &quot؛ لا يمكن التنبؤ به، &quot؛ لأن أجهزة الكمبيوتر عبارة عن آلات حتمية لا تنتج المفاجأة بشكل طبيعي. ما ينتجونه هو العشوائية الزائفة: تسلسل يبدو عشوائيًا ويجتاز الاختبارات الإحصائية ولكن يتم إنشاؤه بواسطة خوارزمية من بذرة البداية. أعط نفس الخوارزمية نفس البذرة وستحصل على نفس التسلسل في كل مرة. تعد إمكانية التكرار هذه ميزة عندما تكتب اختبارًا يجب أن يكون قابلاً للتكرار، ومسؤولية عندما تقوم بسك شيء لا يمكن تخمينه.

في Toolz.dev، يوجد المولد في المتصفح ويقرأ أجزاءه منه crypto.getRandomValues عندما يكشفها المتصفح، وهو ما يفعله كل متصفح حديث. يتم تعريف هذه الوظيفة بواسطة W3C Web Cryptography API ويتم دعمها بواسطة نظام التشغيل &#39؛s مصدر آمن تشفيريًا. عندما يكون هذا المصدر موجودًا، لا يمكن التنبؤ بالأرقام بدرجة كافية للعمل المجاور للأمان مثل اختيار الرموز المميزة أو خلط مجموعة. عندما لا تكون الأداة متاحة بطريقة ما، تعود إلى مولد JavaScript القياسي، وهو أمر جيد للألعاب وأخذ العينات ولكن لا ينبغي أبدًا زرع أي شيء سري. إن معرفة أي من هذين العالمين الذي تتواجد فيه هو الشيء الأكثر أهمية في استخدام أي بئر RNG.

كيف أقوم بإنشاء أرقام عشوائية على Toolz.dev؟

يكون التدفق قصيرًا بشكل متعمد لأنك في معظم الأحيان تريد رقمًا فقط وتريده الآن.

أولا، قم بتعيين النطاق. أدخل الحد الأدنى والحد الأقصى. بالنسبة للأعداد الصحيحة، يكون النطاق شاملاً على كلا الطرفين، لذلك يمكن للأعداد من 1 إلى 6 إرجاع أي من 1 أو 2 أو 3 أو 4 أو 5 أو 6، تمامًا مثل القالب. القيم والنطاقات السالبة التي تمتد من الصفر، مثل -50 إلى 50، تعمل بنفس الطريقة.

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

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

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

متى يجب أن أستخدم الأرقام الفريدة فقط؟

هذا هو الخيار الذي يفتقده الناس، وهو الخيار الذي يغير الرياضيات أكثر من غيره.

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

قم بتشغيل فريد فقط وسيقوم المولد بالسحب دون استبدال. فهو يحتفظ بسجل لما أنتجه بالفعل ويتخطى التكرارات حتى يملأ الدفعة الخاصة بك. الاستخدام الكلاسيكي هو أرقام اليانصيب: إذا كنت تريد ستة أرقام من 1 إلى 49 بدون نسخ مكررة، فإن الفريد فقط هو الفرق بين التذكرة الصالحة والتذكرة المكسورة.

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

الأعداد الصحيحة أو الكسرية: ما الذي أحتاجه؟

الأعداد الصحيحة تغطي معظم الطلبات. النرد وكرات اليانصيب ومؤشرات المصفوفة وعدد السجلات كلها أرقام صحيحة، ويمنحك وضع الأعداد الصحيحة نطاقًا شاملاً يطابق طريقة تفكير الأشخاص في تلك الأشياء.

الكسور العشرية مخصصة للكميات المستمرة: سعر عشوائي، قراءة مستشعر محاكاة، وزن، احتمال. قم بإيقاف تشغيل وضع الأعداد الصحيحة وتستمد الأداة من الفاصل الزمني نصف المفتوح الذي يتضمن الحد الأدنى ولكن ليس الحد الأقصى. إن اصطلاح نصف الفتح هذا، والحد الأدنى المضمن والحد الأقصى المستبعد، هو نفسه الذي يكمن وراء كل RNG للفاصلة العائمة تقريبًا في كل لغة، بما في ذلك JavaScript&#39؛s الخاصة Math.random، والتي تُرجع قيمة في النطاق من 0 إلى 1 ولكن لا تتضمنها. مطابقة هذه الاتفاقية تعني أن الأرقام التي تحصل عليها هنا تتصرف مثل الأرقام التي ستحصل عليها في الكود.

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

ما مدى عشوائية &quot؛ عشوائي بما فيه الكفاية وحاصل؛؟

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

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

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

ما الذي يمكنني البناء به بالفعل؟

بعض الطرق التي يكتسب بها هذا مكانه في سير عملي.

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

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

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

وبالنسبة للأشياء اليومية، فهي عبارة عن أسطوانة نرد، وقلب عملة معدنية عندما تتعامل مع 1 و2 كرؤوس وذيول، و&quot؛ اختر رقمًا واقتباسًا؛ تسوية الحجج الصغيرة. ليس كل استخدام يجب أن يكون جديًا ليكون مفيدًا.

كيف يمكن مقارنة هذا بكتابة كتابتك الخاصة؟

يمكنك الكتابة Math.floor(Math.random() * (max - min + 1)) + min ويتم. لقد كتبت هذا السطر ألف مرة. فلماذا الوصول إلى أداة؟

سببان، كلاهما تعلم بالطريقة الصعبة. الأول هو الأخطاء المتقطعة والتحيز المعياري التي تتسلل إلى رياضيات النطاق الملفوفة يدويًا، خاصة بمجرد إضافة الحدود الشاملة مقابل الحصرية والمتطلبات الفريدة فقط. تتعامل الأداة مع حالات الحافة، بما في ذلك &quot؛ لقد طلبت قيمًا فريدة أكثر من تلك الموجودة والحاصل؛ حالة، لذلك لا يمكنك إعادة اكتشافها في الساعة 2 صباحًا. والثاني هو ذلك Math.random من الواضح أنها ليست آمنة من الناحية المشفرة، وهي حقيقة تنص عليها وثائق MDN بوضوح، ومن السهل أن تنسى أنه عند لصق مقتطف في تعليمات برمجية تحمي شيئًا حقيقيًا لاحقًا. يتم تعيين مولد Toolz.dev افتراضيًا على مصدر العملات المشفرة، وبالتالي فإن السلوك الأكثر أمانًا هو السلوك الذي تحصل عليه دون التفكير فيه.

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

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

ما هي الأخطاء الشائعة التي يرتكبها الناس بالأرقام العشوائية؟

بعد سنوات من مراجعة التعليمات البرمجية وأسلوبي وأشخاص آخرين &#39؛s، تظهر نفس مجموعة الأخطاء مرارًا وتكرارًا، وهي تستحق التسمية حتى تتمكن من تجنبها.

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

والثاني هو الوصول إلى المصدر الخطأ. تعرض الكثير من البرامج التعليمية صيغة نطاق مبنية عليها Math.random ولا تذكر أبدًا أنه غير مناسب لأي شيء حساس للأمان. تبدو القيمة عشوائية، ويعمل العرض التوضيحي، وتظل العادة ثابتة. ثم يقوم شخص ما بنسخ هذا المقتطف إلى تعليمات برمجية تنشئ رمزًا مميزًا لإعادة تعيين كلمة المرور، والآن &quot؛ عشوائي وحاصل؛ يمكن التنبؤ بالرمز المميز لأي شخص يفهم الخوارزمية الأساسية. القاعدة صريحة: إذا لم يكن الإنسان قادرًا أبدًا على تخمين القيمة، فإنه يحتاج إلى مصدر تشفير. يقوم مولد Toolz.dev بالتعيين الافتراضي لهذا المصدر، وهو الإعداد الافتراضي الأكثر أمانًا لبناء عادة حوله.

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

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

الأسئلة المتداولة

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

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

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

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

كيف أقوم بإنشاء أرقام عشوائية فريدة بدون تكرارات؟

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

هل يمكنه توليد أرقام عشرية؟

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

هل يمكنني استخدام الأرقام السالبة؟

نعم. أدخل حدًا أدنى سالبًا، أو حدًا أقصى سالبًا، أو نطاقًا يمتد إلى الصفر، مثل -50 إلى 50. يتعامل المولد مع النطاقات السالبة والمختلطة بنفس الطريقة التي يتعامل بها مع النطاقات الموجبة.

كم عدد الأرقام التي يمكنني توليدها في وقت واحد؟

ما يصل إلى 10000 رقم لكل دفعة. تتضمن النتيجة المجموع والمتوسط حتى تتمكن من التحقق من صحة الدفعات الكبيرة في لمحة، ويتم نسخ القائمة بأكملها كقيم مفصولة بأسطر جديدة.

هل مولد الأرقام العشوائية هذا مجاني وخاص؟

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

ما الذي يمكنني استخدام مولد الأرقام العشوائية من أجله؟

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

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!