كيف تُولِّد قيمة عشوائية بناءً على احتمال معيَّن في Excel؟
عند العمل مع Excel، قد تحتاج أحيانًا إلى توليد قيم عشوائية تعكس احتمالات محددة مسبقًا. على سبيل المثال، تخيل أن لديك جدولًا يعرض عدة نتائج محتملة مع احتمالاتها المرتبطة، كما في لقطة الشاشة أدناه.
يُعد هذا السيناريو شائعًا في محاكاة الأعمال ونمذجة المشاريع والأغراض التعليمية، حيث تريد أن يعكس الاختيار العشوائي بدقة الاحتمال أو التكرار المحدَّد بواسطة بياناتك.
تشمل الاحتياجات والاستخدامات النموذجية ما يلي:
- محاكاة استجابات الاستبيانات أو اختيارات العملاء، مع جعل بعض الإجابات أكثر احتمالاً من غيرها.
- أنشئ مجموعات بيانات تجريبية أو سحوبات عشوائية لتعليم مفاهيم الاحتمالات.
- أتمتة عمليات الاختيار بحيث يحظى كل خيار بفرصة معلومة.
- تصميم الألعاب وتحليل المخاطر، حيث تتطلب النتائج توزيعات احتمالية محددة.
أدناه تجد عدة طرق لتوليد قيم عشوائية وفق احتمالات معيّنة في Excel، بما في ذلك تقنيات تعتمد على الصيغ القياسية، وأتمتة متقدمة باستخدام VBA، بالإضافة إلى استخدام أداة تحليل البيانات (Analysis ToolPak) المدمجة في Excel.
توليد قيمة عشوائية مع احتمال
يقدم Excel حلاً عمليًا مبنيًا على الصيغ لتوليد قيم عشوائية وفقًا لاحتمالات محددة، وهو مثالي للمهام السريعة، حيث يعمل بالكامل داخل أوراق العمل دون الحاجة إلى أي إعداد خاص.
قبل البدء، تأكد من أن قيمك مُدرجة في عمود واحد (A2:A8)، وأن احتمالاتها المقابلة (المعبر عنها بأعداد عشرية بين 0 و1) موجودة في العمود المجاور (B2:B8). يجب أن يساوي مجموع الاحتمالات 1 لضمان الدقة. ويُعد هذا الحل مثاليًا للجداول التي تحتوي على عدد معقول من القيم.
1.في عمود مجاور (ابدأ من الخلية C2)، أدخل الصيغة التالية لحساب الاحتمالات التراكمية:
=SUM($B$2:B2) ثم اسحب هذه الصيغة لأسفل لتغطية جميع قيمك، فيُنشئ ذلك نطاقات تراكمية لكل قيمة، مما يساعدك على ربط رقم عشوائي بنتيجة محددة.
2.في أي خلية فارغة (على سبيل المثال، D2)، أدخل الصيغة التالية لإرجاع قيمة عشوائية بناءً على توزيع الاحتمالات الخاص بك:
=INDEX(A$2:A$8,COUNTIF(C$2:C$8,"<="&RAND())+1) اضغطEnter لعرض قيمة عشوائية. في كل مرة تضغط فيهاF9 (لإعادة الحساب)، أو عند تغيّر بيانات ورقة العمل، ستظهر نتيجة جديدة.
نصائح وتحذيرات:
- يجب أن يُجمَع مجموع الاحتمالات في العمود B بالضبط إلى 1 (أو 100% إذا كنت تستخدم النسب المئوية، ولكن تأكد من تحويلها إلى أعداد عشرية عند إدخالها في الصيغ) لضمان توزيع عادل.
- هذه التقنية أنسب للقوائم القصيرة. فإذا كانت لديك عشرات أو مئات القيم، فقد يتباطأ الأداء وتصبح الصيانة أصعب.
- إذا كنت بحاجة إلى تكرار الاختيار العشوائي لعدة سحوبات (مثل إنشاء دفعة من نتائج المحاكاة)، فما عليك سوى نسخ الصيغة النهائية إلى نطاقٍ أسفلَ أو بجانبها.
- احذر من الصفوف الفارغة والنطاقات غير المتطابقة، فقد تؤدي إلى أخطاء أو نتائج غير متوقعة.
تذكير بالخطأ:إذا ظهر خطأ #REF! أو #VALUE!، فتأكد من أن عمود الاحتمالات التراكمية متطابق في طوله مع قيمك، وأن جميع الاحتمالات أرقامًا صالحة.

افتح سحر إكسل مع KUTOOLS AI
- التنفيذ الذكي: نفِّذ عمليات الخلايا، وحلِّل البيانات، وأنشئ المخططات البيانية — كل ذلك بأوامر بسيطة!
- الصيغ المخصصة: أنشئ صيغًا مخصصة لتبسيط سير عملك.
- برمجة VBA: اكتب وأَنفِذ أكواد VBA بسلاسة تامة.
- تفسير الصيغ: افهم الصيغ المعقدة بسهولة!
- ترجمة النصوص: اكسر الحواجز اللغوية في جداولك الإلكترونية!
VBA: توليد قيم عشوائية مع احتمالات معيّنة
للمستخدمين الذين يحتاجون إلى أتمتة متقدمة أو يرغبون في توليد كميات كبيرة من القيم العشوائية—مثل آلاف العيّنات—يُعدّ Excel VBA حلاً عمليًا، أسرع وأكثر مرونة من صيغ أوراق العمل. وتبرز فعالية هذه الطريقة بشكل خاص عند التعامل مع مجموعات بيانات ضخمة أو إنشاء نتائج عشوائية واسعة النطاق لأغراض المحاكاة.
1.انتقل إلىأدوات المطور>Visual Basic، ثم في نافذة VBA، انقر فوقإدراج>وحدة نمطية، والصق الكود التالي في الوحدة النمطية:
Sub GenerateRandomWithProbability()
Dim rngValues As Range
Dim rngProbs As Range
Dim n As Long
Dim i As Long
Dim cumProbs() As Double
Dim valList() As Variant
Dim randNum As Double
Dim resultRange As Range
Dim idx As Long
' On Error, ignore
On Error Resume Next
xTitleId = "KutoolsforExcel"
' Select values
Set rngValues = Application.InputBox("Select values range", xTitleId, Type:=8)
' Select probabilities
Set rngProbs = Application.InputBox("Select probabilities range", xTitleId, Type:=8)
' Number of random values to generate
n = Application.InputBox("Number of random values to generate", xTitleId, "10", Type:=1)
' Where to output
Set resultRange = Application.InputBox("Select output start cell", xTitleId, Type:=8)
If rngValues.Rows.Count <> rngProbs.Rows.Count Then
MsgBox "Values and probabilities range must be the same size.", vbExclamation
Exit Sub
End If
ReDim cumProbs(1 To rngValues.Count)
ReDim valList(1 To rngValues.Count)
' Calculate cumulative probabilities
cumProbs(1) = rngProbs.Cells(1, 1).Value
valList(1) = rngValues.Cells(1, 1).Value
For i = 2 To rngValues.Count
cumProbs(i) = cumProbs(i - 1) + rngProbs.Cells(i, 1).Value
valList(i) = rngValues.Cells(i, 1).Value
Next i
' Generate random results
For i = 1 To n
randNum = Rnd
For idx = 1 To UBound(cumProbs)
If randNum <= cumProbs(idx) Then
resultRange.Cells(i, 1).Value = valList(idx)
Exit For
End If
Next idx
Next i
End Sub 2. في نافذة VBA، انقر فوق
زر التشغيل لتنفيذ الكود. بعد ذلك، سيتم مطالبتك على التوالي باختيار نطاق قيمك، ونطاق الاحتمالات، وعدد القيم العشوائية التي ترغب في توليدها، بالإضافة إلى خلية البداية للمخرجات. وسيقوم الماكرو بتعبئة الخلايا المستهدفة بسرعة بقيم عشوائية بناءً على الاحتمالات المعيّنة.
- يمكنك تكرار هذه العملية مع مجموعات بيانات أكبر، كما يمكنك تخصيص عمود المخرجات في أي ورقة تريدها.
- إذا لم يكن مجموع نطاق احتمالاتك قريبًا بما يكفي من 1، فقد يؤدي ذلك إلى انحراف في التوزيع؛ لذا تأكد دائمًا من صحة افتراضاتك.
- يُعد هذا الحل المفضّل للعينات الآلية والمحاكاة وإنشاء دفعات قابلة للتكرار.
نصائح:تأكد من أن تكون قيمك واحتمالاتك متجاورة ومتوافقة بوضوح. واحفظ عملك قبل تشغيل الماكرو، لأن إجراءات VBA لا يمكن التراجع عنها باستخدام زر التراجع (Undo).
مقالات ذات صلة:
- كيف يمكنك توليد أرقام عشوائية دون تكرار في Excel؟
- كيف يمكنك الحفاظ على الأرقام العشوائية في Excel أو منعها من التغيّر؟
- كيف تُولِّد قيمة عشوائية بـ«نعم» أو «لا» في Excel؟
أفضل أدوات الإنتاجية لمكتبتك
عزِّز مهاراتك في Excel باستخدام Kutools لـ Excel، وعايش الكفاءة كما لم تفعل من قبل.يقدّم Kutools لـ Excel أكثر من 300 ميزة متقدمة لتعزيز الإنتاجية ووقت الحفظ.انقر هنا للحصول على الميزة التي تحتاجها أكثر من غيرها...
يجلب Office Tab واجهة ذات علامات تبويب إلى Office، ويجعل عملك أسهل بكثير
- تمكّن من التحرير والقراءة باستخدام علامات التبويب في Word وExcel وPowerPoint، وPublisher وAccess وVisio وProject.
- افتح وأنشئ مستندات متعددة في علامات تبويب جديدة داخل النافذة نفسها، بدلاً من فتح نوافذ جديدة.
- يزيد إنتاجيتك بنسبة 50% ويوفّر لك مئات نقرات الفأرة كل يوم!
جميع الإضافات من Kutools في برنامج تثبيت واحد!
Kutools for Office حزمةٌ تحتوي على إضافاتٍ مخصصة لتطبيقات Excel وWord وOutlook وPowerPoint، إلى جانب Office Tab Pro، مما يجعلها الخيار المثالي للفِرق التي تعمل عبر تطبيقات Office.
- حزمة شاملة واحدة— إضافات Excel وWord وOutlook وPowerPoint بالإضافة إلى Office Tab Pro
- برنامج تثبيت واحد، ترخيص واحد— الإعداد خلال دقائق (جاهز لـ MSI)
- يعمل بشكل أفضل معًا— إنتاجية ميسَّرة عبر تطبيقات Office
- تجربة مجانية لمدة 30 يومًا بكامل الميزات— بدون تسجيل، بدون بطاقة ائتمان
- أفضل قيمة— وفِّر مقارنةً بشراء الإضافات بشكل منفصل