drand48(3)

الاسم
drand48، erand48، lrand48، nrand48، mrand48، jrand48، srand48، seed48، lcong48 - توليد أعداد شبه عشوائية موزعة بشكل منتظم

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <stdlib.h>

double drand48(void);
double erand48(unsigned short xsubi[3]);

long lrand48(void);
long nrand48(unsigned short xsubi[3]);

long mrand48(void);
long jrand48(unsigned short xsubi[3]);

void srand48(long seedval);
unsigned short *seed48(unsigned short seed16v[3]);
void lcong48(unsigned short param[7]);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

كافة الدوال الموضحة أعلاه:
    _XOPEN_SOURCE
        || /* glibc >= 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _SVID_SOURCE

الوصف
تولد هذه الدوال أعدادًا شبه عشوائية باستخدام خوارزمية التوافق الخطي وحساب الأعداد الصحيحة ذات 48 بت.

ترجع الدالتان drand48() و erand48() قيم فاصلة عائمة مزدوجة الدقة غير سالبة موزعة بشكل منتظم على الفترة [0.0, 1.0).

ترجع الدالتان lrand48() و nrand48() أعدادًا صحيحة طويلة غير سالبة موزعة بشكل منتظم على الفترة [0, 2^31).

ترجع الدالتان mrand48() و jrand48() أعدادًا صحيحة طويلة موقعة موزعة بشكل منتظم على الفترة [-2^31, 2^31).

الدوال srand48() و seed48() و lcong48() هي دوال تهيئة، يجب استدعاء إحداها قبل استخدام drand48() أو lrand48() أو mrand48(). لا تتطلب الدوال erand48() و nrand48() و jrand48() استدعاء دالة تهيئة أولاً.

تعمل جميع الدوال عن طريق توليد سلسلة من الأعداد الصحيحة ذات 48 بت، Xi، وفقًا لصيغة التوافق الخطي:

    Xn+1 = (aXn + c) mod m, where n >= 0

المعامل m = 2^48، وبالتالي يُجرى حساب الأعداد الصحيحة ذات 48 بت. ما لم يُستدع lcong48()، يُعطى a و c بواسطة:

    a = 0x5DEECE66D
    c = 0xB

تُحسب القيمة التي ترجعها أي من الدوال drand48() أو erand48() أو lrand48() أو nrand48() أو mrand48() أو jrand48() عن طريق توليد Xi التالي ذي 48 بت في السلسلة أولاً. ثم تُنسخ العدد المناسب من البتات، وفقًا لنوع عنصر البيانات المراد إرجاعه، من البتات عالية الرتبة لـ Xi وتُحول إلى القيمة المرجعة.

تخزن الدوال drand48() و lrand48() و mrand48() آخر Xi ذي 48 بت تم توليده في مخزن داخلي. تتطلب الدوال erand48() و nrand48() و jrand48() من البرنامج المستدعي توفير تخزين لقيم Xi المتتالية في وسيط المصفوفة xsubi. تُهيأ الدوال بوضع القيمة الأولية لـ Xi في المصفوفة قبل استدعاء الدالة لأول مرة.

تضبط دالة التهيئة srand48() البتات الـ 32 عالية الرتبة لـ Xi إلى الوسيط seedval. تُضبط البتات الـ 16 منخفضة الرتبة إلى القيمة الاعتبارية 0x330E.

تضبط دالة التهيئة seed48() قيمة Xi إلى القيمة ذات 48 بت المحددة في وسيط المصفوفة seed16v. تُنسخ القيمة السابقة لـ Xi إلى مخزن داخلي ويُرجع seed48() مؤشرًا إلى هذا المخزن.

تسمح دالة التهيئة lcong48() للمستخدم بتحديد قيم أولية لـ Xi و a و c. تحدد عناصر وسيط المصفوفة param[0-2] Xi، وتحدد param[3-5] a، ويحدد param[6] c. بعد استدعاء lcong48()، سيستعيد استدعاء لاحق إما لـ srand48() أو seed48() القيم القياسية لـ a و c.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
drand48(), erand48(), lrand48(), nrand48(), mrand48(), jrand48(), srand48(), seed48(), lcong48() | سلامة الخيوط | MT-Unsafe race:drand48

تسجل الدوال أعلاه معلومات حالة عامة لمولد الأعداد العشوائية، لذا فهي ليست آمنة للخيوط.

المعايير
POSIX.1-2008.

التاريخ
POSIX.1-2001، SVr4.

انظر أيضًا
rand(3)، random(3)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.