كيفية الحصول على رقم عشوائي في Kotlin: دليل كامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العشوائية ليست فوضى: كيف يحل Kotlin مشكلة من Stack Overflow

\n\n

كل مطور كتب كوداً لتوليد رقم عشوائي مرة واحدة على الأقل في حياته. قد يبدو الأمر بسيطاً؟ ولكن عندما يُطرح هذا السؤال على Stack Overflow (والسؤال "How can I get a random number in Kotlin?" يجمع آلاف المشاهدات)، يتضح أن هناك عقبات أكثر مما يبدو. خاصة إذا كنت تنتقل من Java أو Python.

\n\n

في هذه المقالة، سنشرح توليد الأرقام العشوائية في Kotlin من التقنيات البسيطة إلى المتقدمة. ستتعلم كيفية الحصول على عدد صحيح عشوائي، عدد كسري، كيفية تحديد نطاق، وحتى كيفية توليد random آمن للتشفير للأمان. هيا بنا!

\n\n

الأساسيات: Random في Kotlin

\n\n

ليس لدى Kotlin فئة منفصلة خاصة به للـ random - فهو يستخدم java.util.Random القوي من Java، ولكن مع بناء جملة أكثر ملاءمة. بفضل دوال الامتداد، يمكن كتابة كود Kotlin random حرفياً في سطر واحد.

\n\n

أبسط طريقة: Random.nextInt()

\n\n

إذا كنت تحتاج فقط إلى عدد صحيح عشوائي (من 0 إلى أقصى قيمة Int)، استخدم:

\n\n
import kotlin.random.Random\n\nfun main() {\n    val randomNumber = Random.nextInt()\n    println("الرقم العشوائي: $randomNumber")\n}
\n\n

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

\n\n
val fromZeroToTen = Random.nextInt(10)   // 0..9\nval fromFiveToFifteen = Random.nextInt(5, 15) // 5..14
\n\n
هام: في Kotlin، كما في Java، الحد الأعلى غير مضمن. Random.nextInt(10) سيعيد رقمًا من 0 إلى 9.
\n\n

الأعداد الكسرية: Random.nextDouble() و Random.nextFloat()

\n\n

لتوليد float عشوائي في Kotlin أو double استخدم:

\n\n
val randomDouble = Random.nextDouble()   // 0.0..1.0\nval randomFloat = Random.nextFloat()     // 0.0..1.0\n\n// مع نطاق:\nval doubleInRange = Random.nextDouble(10.0, 20.0) // 10.0..20.0
\n\n

لاحظ: nextFloat() لا يدعم النطاق - فقط nextDouble(). إذا كنت بحاجة إلى float في نطاق، قم بالتحويل:

\n\n
val customFloat = Random.nextDouble(1.5, 5.5).toFloat()
\n\n

توليد أرقام عشوائية في نطاق: أمثلة عملية

\n\n

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

\n\n

عدد صحيح عشوائي من 1 إلى 100 (شاملاً)

\n\n

لتضمين الحد الأعلى، أضف 1 ببساطة:

\n\n
val diceRoll = Random.nextInt(1, 7)  // 1..6 (مثل نرد اللعب)\nval lottery = Random.nextInt(1, 101) // 1..100
\n\n

فهرس عشوائي لمصفوفة أو قائمة

\n\n

من أكثر المهام شيوعاً - الحصول على عنصر عشوائي من مجموعة:

\n\n
val colors = listOf("أحمر", "أزرق", "أخضر", "أصفر")\nval randomColor = colors[Random.nextInt(colors.size)]\nprintln("اللون العشوائي: $randomColor")
\n\n

ولكن في Kotlin هناك طريقة أكثر أناقة - دالة random():

\n\n
val randomColor = colors.random()\nprintln("اللون العشوائي: $randomColor")
\n\n

تحت الغطاء، تفعل نفس الشيء، لكن الكود يصبح أنظف.

\n\n

رقم عشوائي بخطوة

\n\n

أحياناً نحتاج إلى توليد أرقام مضاعفة لقيمة معينة. مثلاً، الأرقام الزوجية من 0 إلى 100:

\n\n
fun randomEven(max: Int): Int {\n    val half = max / 2\n    return Random.nextInt(0, half + 1) * 2\n}\n\nprintln(randomEven(100)) // 0, 2, 4, ..., 100
\n\n

تقنيات متقدمة: المتتاليات والأمان التشفيري

\n\n

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

\n\n

إذا كنت بحاجة إلى توليد قائمة من الأرقام العشوائية، استخدم generate

المدونات

توصيات الكتب