يعد إنشاء الأرقام العشوائية أحد المهام المهمة في البرمجة. يمكن استخدام الأرقام العشوائية لأغراض مختلفة ، على سبيل المثال ، لإنشاء بيانات عشوائية أو خوارزميات اختبار أو تصور البيانات. توفر لغة البرمجة سي عدة طرق لتوليد أرقام عشوائية.
واحدة من الطرق لتوليد أرقام عشوائية في ج هو استخدام وظيفة راند (). تولد وظيفة راند() سلسلة من الأرقام العشوائية الزائفة التي تتكرر في كل مرة يتم فيها بدء تشغيل البرنامج. للحصول على قيم مختلفة في كل مرة يتم فيها بدء تشغيل البرنامج ، تحتاج إلى تعيين القيمة الأولية لمولد الأرقام العشوائية باستخدام وظيفة سراند ().
لإنشاء مصفوفة عشوائية ، يمكنك استخدام حلقة تملأ كل عنصر من عناصر المصفوفة برقم عشوائي. على سبيل المثال ، يمكنك إنشاء مصفوفة من 10 أعداد صحيحة عشوائية في النطاق من 0 إلى 100:
- ر [أنا] = راند () ٪ 100;
- }
- العودة 0;
- }
- يستخدم هذا المثال وظيفة سراند (الوقت (0)) لتعيين القيمة الأولية لمولد الأرقام العشوائية بناء على الوقت الحالي. ثم ، في الحلقة ، يتم ملء كل عنصر من عناصر المصفوفة برقم عشوائي باستخدام وظيفة راند () ٪ 100.
- إنشاء مصفوفة عشوائية في ج: نصائح وأمثلة
- 1. توليد أرقام عشوائية باستخدام وظيفة راند()
- 2. توليد أرقام عشوائية في نطاق معين
3. توليد القيم المنطقية العشوائية
باستخدام ستدليب.مكتبة ح
توليد رقم عشوائي في نطاق معين
ملء صفيف بقيم عشوائية
العمل مع صفائف عشوائية متعددة الأبعاد
كيف يمكنني إنشاء مجموعة عشوائية في ج?
كيف أعلن وتهيئة مجموعة عشوائية في ج?
كيف يمكنني إنشاء مجموعة عشوائية من الأعداد الصحيحة في نطاق معين?
كيف يمكنني إنشاء مجموعة عشوائية من الأرقام الحقيقية في ج?
كيف يمكنني إنشاء مجموعة عشوائية من الأحرف في ج?
كيف يمكنني إنشاء مصفوفة عشوائية ثنائية الأبعاد في ج?
إنشاء مصفوفة عشوائية في ج: نصائح وأمثلة
يعد إنشاء مصفوفة عشوائية من أكثر العمليات شيوعا في ج البرمجة. يمكن أن تكون المصفوفات العشوائية مفيدة لاختبار الخوارزميات أو إنشاء بيانات عشوائية أو ببساطة معالجة القيم العشوائية.
في هذه المقالة ، سنلقي نظرة على عدة طرق لإنشاء مصفوفة عشوائية في ج وتقديم أمثلة التعليمات البرمجية لكل طريقة.
1. توليد أرقام عشوائية باستخدام وظيفة راند()
وظيفة راند()
هو المدمج في وظيفة في اللغة ج الذي يولد رقم عشوائي. لإنشاء مصفوفة عشوائية ، يمكنك استخدام هذه الوظيفة في حلقة لملء المصفوفة بعناصر عشوائية.
في ما يلي مثال على الكود يوضح إنشاء مصفوفة عشوائية باستخدام
وظيفة راند()
:
# تشمل
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
// تهيئة رقم سراند العشوائي
مولد (الوقت (0));
// ملء صفيف بقيم عشوائية
ل (إنت أنا = 0 ؛ أنا < طول ؛ أنا i) {
صفيف [أنا] = راند ();
}
// إخراج الصفيف
ل (إنت أنا = 0 ؛ أنا < طول ؛ أنا i) {
برينتف ("٪د " ، صفيف [أنا]);
}
العودة 0;
}
2. توليد أرقام عشوائية في نطاق معين
للحد من الأرقام العشوائية التي تم إنشاؤها إلى نطاق معين ، يمكنك استخدام عامل التشغيل المتبقي (
%
) للحصول على ما تبقى من قسمة رقم عشوائي على القيمة القصوى في نطاق معين. ثم يمكنك تحويل القيمة الناتجة بحيث تقع في النطاق المطلوب.
فيما يلي مثال رمز يوضح إنشاء مصفوفة عشوائية بأرقام في النطاق من 1 إلى 100:
# تشمل
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
طول كثافة العمليات = 10 ؛ / / طول الصفيف
صفيف كثافة العمليات [طول];
// تهيئة رقم سراند العشوائي
مولد (الوقت (0));
// ملء المصفوفة بقيم عشوائية
ل (إنت أنا = 0 ؛ أنا < طول ؛ أنا i) {
صفيف [أنا] = دقيقة + (راند () ٪ (ماكس - دقيقة + 1));
}
// إخراج الصفيف
ل (إنت أنا = 0 ؛ أنا < طول ؛ أنا i) {
برينتف ("٪د " ، صفيف [أنا]);
}
العودة 0;
}
3. توليد القيم المنطقية العشوائية
لإنشاء مصفوفة عشوائية من القيم المنطقية (صح / خطأ) ، يمكنك استخدام عامل التشغيل المتبقي (
%
) للحصول على الباقي من قسمة رقم عشوائي على 2. القيمة 0 سوف تتوافق مع خطأ ، والقيمة 1 سوف تتوافق مع صحيح.
في ما يلي مثال على الكود يوضح إنشاء مصفوفة عشوائية من القيم المنطقية:
# تشمل
# تشمل
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
طول كثافة العمليات = 10 ؛ / / طول الصفيف
مجموعة منطقية [طول];
// تهيئة رقم سراند العشوائي
مولد (الوقت (0));
- صفيف [أنا] = راند () % 2 = = 0 ? خطأ: صحيح;
- ل (إنت أنا = 0 ؛ أنا < طول ؛ أنا i) {
- برينتف ("٪د " ، صفيف [أنا]);
}
العودة 0;
}
الآن أنت تعرف عدة طرق لإنشاء صفيف عشوائي في اللغة ج. اختر الطريقة المناسبة حسب احتياجاتك ومتطلباتك.
باستخدام ستدليب.h
مكتبة ستدليب.ح المكتبة هي واحدة من المكتبات القياسية للغة ج. أنه يحتوي على العديد من الوظائف المفيدة ، بما في ذلك وظائف للعمل مع الذاكرة ، وتوليد أرقام عشوائية ، وغيرها.
لتوليد مجموعة عشوائية في ج ، يمكننا استخدام وظائف من ستدليب.مكتبة ح. على وجه الخصوص ، تسمح لك وظيفة راند() بإنشاء رقم عشوائي في نطاق معين.
لإنشاء مصفوفة عشوائية ، اتبع الخطوات التالية:
تمكين مكتبة ستدليب.ح في التعليمات البرمجية الخاصة بك باستخدام التوجيه
# تشمل
.
استخدام وظيفة سراند () لتهيئة مولد رقم عشوائي. على سبيل المثال ، يمكنك استخدام الوقت الحالي كبذرة:
سراند (الوقت (فارغ))
.
استخدام وظيفة راند () لتوليد أرقام عشوائية في النطاق المطلوب وملء الصفيف.
نموذج التعليمات البرمجية لتوليد صفيف عشوائي:
# تشمل
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
حجم كثافة العمليات = 10 ؛ / / حجم الصفيف
صفيف كثافة العمليات [الحجم];
// تهيئة رقم سراند العشوائي
مولد (الوقت (لاغية));
// ملء المصفوفة بأرقام عشوائية
- ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {
- صفيف [أنا] = راند ();
- }
// إخراج الصفيف
ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {
برينتف ("٪د " ، صفيف [أنا]);
}
العودة 0;
}
في هذا المثال ، يتم ملء مجموعة من 10 عناصر بأرقام عشوائية يتم عرضها على الشاشة. لكي تعمل وظيفة راند() بشكل صحيح ، من الضروري تهيئة مولد الأرقام العشوائية باستخدام وظيفة سراند (). في هذا المثال ، يتم استخدام الوقت الحالي للتهيئة.
وهكذا ، وذلك باستخدام ستدليب.مكتبة ح يجعل من السهل لتوليد صفائف عشوائية في اللغة ج.
توليد رقم عشوائي في نطاق معين
يعد إنشاء الأرقام العشوائية مهمة مهمة في العديد من البرامج. تتيح لك القدرة على إنشاء أرقام عشوائية في نطاق معين إنشاء مجموعة متنوعة من البيانات العشوائية واستخدامها في عمليات حسابية أو خوارزميات أخرى.
لغة البرمجة ج لديها العديد من الوظائف التي تسمح لك لتوليد أرقام عشوائية. ومع ذلك ، من أجل إنشاء رقم عشوائي في نطاق معين ، سنحتاج إلى منطق إضافي.
لإنشاء رقم عشوائي في نطاق معين ، يمكنك استخدام الخوارزمية التالية:
حدد الحد الأدنى والحد الأقصى لقيم النطاق الذي يتم فيه إنشاء رقم عشوائي.
قم بإنشاء رقم عشوائي باستخدام دالة تنشئ رقما عشوائيا بين 0 و راند_ماكس (القيمة القصوى التي يمكن إنشاؤها بواسطة دالة راند ()).
جلب إنشاء العدد المطلوب النطاق باستخدام الصيغة: ولدت number_ = minimal_value + ((ولدت NUMBER_OF_0_DO_RAND_MAX / RAND_MAX) * (maximal_value — minimal_value)).
مثال على رمز ج لتوليد رقم عشوائي في نطاق معين:
# تشمل
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
الحد الأدنى للقيمة ، الحد الأقصى للقيمة;
int random_number;
printf("Введите минимальное значение диапазона: ");
scanf("%d", &min_value);
printf("Введите максимальное значение диапазона: ");
scanf("%d", &max_value);
// Инициализация генератора случайных чисел
srand(time(0));
random_number = min_value + (rand() % (max_value - min_value + 1));
printf("Сгенерированное случайное число: %d
", random_number);
return 0;
}
في هذا المثال ، باستخدام وظائف المسح الضوئي () ، يطلب من المستخدم إدخال الحد الأدنى والحد الأقصى لقيم النطاق. ثم يتم تهيئة مولد رقم عشوائي باستخدام وظيفة سراند () والوقت الحالي. يستخدم السطر التالي من التعليمات البرمجية عوامل التشغيل لإنشاء رقم عشوائي في نطاق معين. وأخيرا ، يتم عرض الرقم العشوائي الذي تم إنشاؤه على الشاشة.
ملء صفيف بقيم عشوائية
للعمل مع أرقام عشوائية في ج ، يمكننا استخدام وظيفة راند () من ستدليب المكتبة القياسية.h. يقوم بإنشاء عدد صحيح شبه عشوائي في النطاق من 0 إلى راند_ماكس ، والذي يمثل القيمة القصوى التي يمكن الحصول عليها باستخدام #تضمين.
للحصول على رقم عشوائي في نطاق معين ، يمكنك استخدام الصيغة مين + راند () ٪ (ماكس — مين + 1) ، حيث مين هو الحد الأدنى للقيمة ، ماكس هو الحد الأقصى للقيمة.
لملء المصفوفة بقيم عشوائية ، تحتاج إلى المرور عبر كل عنصر من عناصر المصفوفة وتعيين رقم تم إنشاؤه باستخدام وظيفة راند ().
في ما يلي مثال على رمز يوضح كيفية ملء مصفوفة بقيم عشوائية:
# تشمل
# تشمل
# تحديد حجم 10
كثافة العمليات الرئيسية () {
صفيف كثافة العمليات [الحجم];
الباحث الأول;
سراند (الوقت (فارغ)); // تهيئة مولد الأرقام العشوائية الزائفة
ل (أنا = 0 ؛ أنا < الحجم ؛ أنا i) {
صفيف [أنا] = راند ();
}
برينتف ("مجموعة من الأرقام العشوائية:
");
ل (أنا = 0 ؛ أنا < الحجم ؛ أنا i) {
برينتف ("٪د
"،صفيف [أنا]);
}
العودة 0;
}
في هذا المثال ، يتم إنشاء مصفوفة من 10 عناصر. ثم يتم تهيئة مولد رقم شبه عشوائي مع الوقت الحالي باستخدام وظيفة سراند(الوقت (فارغة)). بعد ذلك ، تملأ الحلقة المصفوفة بقيم عشوائية باستخدام وظيفة راند (). يتم تعيين كل عنصر من عناصر المصفوفة إلى الرقم الذي تم إنشاؤه. في نهاية البرنامج ، يتم عرض محتويات المصفوفة على الشاشة.
إدارة مولد رقم عشوائي
مولد رقم عشوائي (رنغ) هو أداة البرمجة الهامة التي تسمح لك لخلق قيم عشوائية. في اللغة ج ، ستدليب.ح مكتبة يستخدم لتوليد أرقام عشوائية.
الوظيفة الرئيسية لتوليد أرقام عشوائية في لغة ج هي راند(). فإنه يعود قيمة إنت عشوائية ، والتي هي في نطاق من 0 إلى قيمة ثابت راند_ماكس. قد تكون قيمة راند_ماكس مختلفة بالنسبة للأنظمة المختلفة ، ولكنها عادة ما تكون أكثر من 32000.
للحصول على قيم عشوائية مختلفة في كل مرة تقوم فيها بتشغيل البرنامج ، تحتاج إلى تهيئة مولد الأرقام العشوائية. للقيام بذلك ، يمكنك استخدام وظيفة سراند (). يتم تمرير وظيفة سراند () كوسيطة قيمة الوقت الحالي ، التي تم الحصول عليها باستخدام وظيفة الوقت () من مكتبة الوقت.h.
مثال على التعليمات البرمجية التي توضح توليد أرقام عشوائية:
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
الباحث الأول;
سراند (الوقت (فارغ)) ؛ / / تهيئة مولد الأرقام العشوائية
- إلى عن على (أنا = 0 ؛ أنا < 10 ؛ أنا i) {
- عدد عشوائي = راند ();
- برينتف ("رقم عشوائي: ٪ د
- "،رقم عشوائي);
}
العودة 0;
}
في هذا المثال ، باستخدام ل حلقة ، يتم إنشاء عشرة أرقام عشوائية وعرضها على الشاشة. هنا ، يتم استخدام وظيفة برينتف () لإخراج قيم الأرقام العشوائية.
ومع ذلك ، إذا كنت بحاجة إلى إنشاء أرقام عشوائية في نطاق معين ، فيمكنك استخدام الصيغة:
رقم عشوائي = (راند () ٪ (الحد الأقصى للقيمة-الحد الأدنى للقيمة + 1)) + الحد الأدنى للقيمة;
في هذه الصيغة ، القيمة القصوى والقيمة الدنيا هي القيم القصوى والدنيا التي تريد الحصول عليها.
هناك أيضا وظيفة سراندوم () ، والتي تسمح لك بالتحكم بشكل أكثر دقة في توليد الأرقام العشوائية. ومع ذلك ، نادرا ما يتم استخدامه من قبل المبرمجين العاديين ، لأنه يتطلب تهيئة أكثر تعقيدا.
من المهم معرفة أن مولد الأرقام العشوائية في ج غير عشوائي ، مما يعني أن تسلسل الأرقام التي يولدها قد يكون متكررا. للحصول على إنشاء أرقام عشوائية أكثر استقرارا من الناحية المشفرة ، يوصى باستخدام مكتبات تشفير متخصصة.
تجنب تكرار القيم العشوائية
عند إنشاء قيم عشوائية في مصفوفة ، قد تكون هناك مشكلة في التكرار. إذا كنت تريد إنشاء مصفوفة بدون تكرار ، يمكنك استخدام الخوارزمية التالية:
إنشاء صفيف فارغ.
إنشاء رقم عشوائي.
تحقق مما إذا كان هذا الرقم موجودا في المصفوفة التي تم إنشاؤها. إذا كان هناك ، فارجع إلى الخطوة 2.
إذا لم يتم تكرار الرقم ، فأضفه إلى المصفوفة.
مثال على رمز ج تنفيذ هذه الخوارزمية:
# تشمل
# تشمل
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
كثافة العمليات ن ؛ / / حجم الصفيف
برينتف ("أدخل حجم المصفوفة:");
سكانف ("٪د " ، & ن);
إنت * صفيف = مالوك (ن * سيزوف(إنت)) ؛ / / تخصيص الذاكرة لمجموعة
// تهيئة رقم سراند العشوائي
مولد (الوقت (لاغية));
عدد الباحث = 0 ؛ / / عدد عناصر الصفيف
بينما (العد < ن) {
كثافة العمليات عشوائي = راند () ؛ / / توليد رقم عشوائي
منطقي موجود = خطأ ؛ / / علم يشير إلى وجود التكرار
ل (إنت أنا = 0 ؛ أنا < العد ؛ أنا i) {
إذا (صفيف [أنا] = = عشوائي) {
موجود = صحيح;
استراحة;
}
}
إذا (!موجود) {
صفيف [العد] = عشوائي ؛ / / إضافة عنصر إلى المصفوفة
- count++;
- }
- }
- // إخراج المصفوفة
- برينتف ("مجموعة ولدت دون التكرار:
");
إلى عن على (كثافة العمليات أنا = 0 ؛ أنا < ن ؛ أنا i) {
برينتف ("٪د " ، صفيف [أنا]);
}
مجانا (صفيف) ؛ / / تحرير الذاكرة
العودة 0;
}
سيقوم هذا الرمز بإنشاء مصفوفة بحجم معين دون تكرار القيم العشوائية. إذا تم إنشاء الرقم بالفعل من قبل ، فسيتم تجديده حتى يتم العثور على قيمة فريدة.
العمل مع صفائف عشوائية متعددة الأبعاد
للعمل مع صفائف عشوائية متعددة الأبعاد في ج ، يمكنك استخدام النهج التالي:
تحديد عدد الأبعاد وأبعاد كل بعد من الصفيف.
تخصيص الذاكرة للصفيف باستخدام وظيفة مالوك ().
إنشاء قيم عشوائية لكل عنصر من عناصر المصفوفة.
معالجة الصفيف حسب الحاجة.
Освободите память, занятую массивом, с помощью функции free().
Вот пример кода на языке C, демонстрирующий этот подход:
#include
#include
#include
int main() {
int rows, columns;
printf("Введите количество строк: ");
scanf("%d", &rows);
printf("Введите количество столбцов: ");
scanf("%d", &columns);
int** array = (int**)malloc(rows * sizeof(int*));
for (int i = 0; i < rows; i++) {
array[i] = (int*)malloc(columns * sizeof(int));
}
srand(time(NULL));
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
array[i][j] = rand() % 100; // генерация случайного числа от 0 до 99
}
}
// обработка массива, например, печать его элементов
printf("Сгенерированный массив:
");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
printf("%d ", array[i][j]);
}
printf("
");
}
for (int i = 0; i < rows; i++) {
free(array[i]);
}
free(array);
return 0;
}
يطلب هذا الرمز عدد الصفوف وعدد الأعمدة للمصفوفة ، ويخصص الذاكرة للمصفوفة ، ويولد قيما عشوائية لكل عنصر ، ويطبع المصفوفة التي تم إنشاؤها.
يمكن استخدام هذا النهج للعمل مع صفائف من أي بعد.
مثال على برنامج مع جيل صفيف عشوائي
لإنشاء صفيف عشوائي في ج ، يمكنك استخدام وظيفة راند() من المكتبة القياسية. في ما يلي مثال على برنامج يقوم بإنشاء مصفوفة عشوائية ويعرضها على الشاشة.
# تشمل
# تشمل
# تشمل
# تحديد حجم 10
فواد برينتراي (إنت أر [] ، إنت الحجم) {
برينتف ("صفيف عشوائي:");
ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {
برينتف ("٪د " ، أر[ط]);
}برينتف("
");
}
كثافة العمليات الرئيسية () {
الباحث آر [حجم];
سراند (الوقت (فارغ));
ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {
أر [أنا] = راند () ٪ 100 ؛ / / رقم عشوائي من 0 إلى 99
}
برينتراي (آر ، الحجم);
العودة 0;
}
في هذا المثال ، يتم إنشاء مجموعة أر من حجم 10 ومليئة أرقام عشوائية من 0 إلى 99 باستخدام وظيفة راند (). من أجل توليد رقم عشوائي لتكون مختلفة في كل مرة يتم تشغيل البرنامج ، يتم استخدام وظيفة سراند(الوقت(فارغة)) ، الذي تهيئة مولد رقم عشوائي وفقا للوقت الحالي.
تقوم وظيفة برينتراي () بإخراج المصفوفة التي تم إنشاؤها إلى الشاشة. نتيجة للبرنامج ، سوف نحصل على شيء مثل: