الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استنتاج الارقام العشوائية في ال TSQL

بدأه عمر المستشار في 30 أغسطس 2012 · 4 رد · 1,477 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاتة

موضوعنا لهذا اليوم كيفية استنتاج ارقام عشوائية في ال TSQL

انتجت لنا مايكروسوفت دالة او ال Function المسماة Rand وهي اختصار لل random (( العشوائية )) وهي تفيد في انتاج ارقام عشرية صحيحة

الصيغة العامة التاية التي تكتب بها هي

RAND ( [ seed ] )

وكمثال جرب الكود التالية كما في الصورة

rand1.jpg?w=550

تفيد هذة الدالة في انشاء ارقام عشوائية ينتجها محرك ال SQL Server مما يسرع لدينا سرعه الاستعلام لان المعالجة تتم فقط في ال SQL Server كما في الشكل اعلاة

هنالك العديد من الطرق لانتاج هذة الرقام وسناخذ الامثلة الكافية اليها

طريقة 1 انتاج ارقام عشوائية بشكل INT

SELECT CAST(RAND() * 1000 AS INT) AS [RandomNumber]

طريقة 2 في حال اردنا رقم عشوائي ثابت عن طريق تحديد الخاصية Seed لنلاحظ المثال التالي

SELECT RAND(1) AS [RandomNumber]

وكفكرة اخرى في انتاج ارقام ثابتة لاحصائيات جدول معين كما في المثال التالي

Select RAND()as [RandomNumber] ,ID_Fied from TBL_name

لاحظ في كل مرة نقوم فيها بعرض الجدول يتغير التعداد

افكار اخرى طريقة 3

انتاج ارقام عشوائية محصورة بين قيمتين جرب الكود التالي

DECLARE @Random INT;

DECLARE @Upper INT;

DECLARE @Lower INT

SET @Lower = 1 —- ادنى قيمة

SET @Upper = 999 —- اعلى قيمة

SELECT @Random = ROUND(((@Upper – @Lower -1) * RAND() + @Lower), 0)

Print @Random

افكار واكواد اخرى استخلاص الرقم العشوائي من تاريخ ووقت الحاسبة

SELECT RAND( (DATEPART(mm, GETDATE()) * 100000 )

+ (DATEPART(ss, GETDATE()) * 1000 )

+ DATEPART(ms, GETDATE()) )

<p dir="RTL"> وك دالة اخرى في استنتاج ارقام عشوائية نستخدم NEWID() الصيغة القواعدية لها هي كالتالي

NEWID()

لكن فرقها عن الاولى في انها تنتج ارقام عشوائية بصيغة ال Hexadecimal اي الارقام الستة عشر

لنجرب المثال التالي

rand2.jpg?w=550

لنحاول تقريب النتاج الى عشرية كما في الكود التالي

SELECT CAST(CAST(newid() AS binary(4)) AS int)

وكفكرة في استخدام الرقام العشوائية لدينا بعض مواقع الويب تحتاج الى ادخال اسم العضو ومن ثم ارسال passowrd لهذا الاسم على الايميل

ففكرة الارقام العشوائية سوف تفيدنا هنــا

شكراً لكم وارجوا منكم دعائكم الكريم

1
1vAO2-d3nY_335990295.gif

يارب ساعدني كلما اتقدم خطوة اجد نفسي متأخر في خطوات

154047116.gif
#2

السلام عليكم ورحمة الله وبركاتة

شكراً لك أخي الكريم عمر على هذا الدرس الخفيف.

و في أنتظار المزيد...

My Latest

Hello Entity Framework Code First

--------------------

#3

الله يبارك بيك اخي الكريم

1vAO2-d3nY_335990295.gif

يارب ساعدني كلما اتقدم خطوة اجد نفسي متأخر في خطوات

154047116.gif
#4

RAND() تنتج أرقام "شبه" عشوائية، ما يعرف بـ PRNG = Pseudo Random Number Generator

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

الأرقام العشوائية الحقيقية يتم توليدها عادة من الضجيج الالكتروني أو من atmospheric noise

لأن نسبة الحصول على ذات الـ seed تصبح ضئيلة جداً وأقرب إلى العدم.

الموقع التالي: http://www.random.org

يقدم خدمات مختلفة لتوليد أرقام عشوائية حقيقية، ومنها قيم تم التقاطها من الضجيج الأبيض

إذا كنت تريد true randomness، فاترك قواعد بيانات MSSQL واستخدم MySQL على لينوكس واحصل على أرقامك المفضلة من /dev/random :lol:

* هذه المشاركة مجرد إضافة للتوضيح ولا يقصد منها التقليل من أهمية الموضوع.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5
Xacker كتب:

[ltr][/ltr]

* هذه المشاركة مجرد إضافة للتوضيح ولا يقصد منها التقليل من أهمية الموضوع.

ولايهمك اخي ومنكم نستفيد شكراً على المعلومة بارك الله فيك

1vAO2-d3nY_335990295.gif

يارب ساعدني كلما اتقدم خطوة اجد نفسي متأخر في خطوات

154047116.gif

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…