الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Creating Random Numbers in PL/SQL

Featured Replies

بتاريخ:

tofeee

تحياتي لكم

لكل يوم معلومة جديدة تفيدني وتفيدكم

CREATE OR REPLACE PACKAGE random IS

 -- Returns random integer between [0, r-1]
 FUNCTION rndint(r IN NUMBER) RETURN NUMBER;

 -- Returns random real between [0, 1]
 FUNCTION rndflt RETURN NUMBER;

END;
/

CREATE OR REPLACE PACKAGE BODY random IS

 m         CONSTANT NUMBER:=100000000;  /* initial conditions */
 m1        CONSTANT NUMBER:=10000;      /* (for best results) */
 b         CONSTANT NUMBER:=31415821;   /*      */
 a         NUMBER;                      /* seed */
 the_date  DATE;                        /*      */
 days      NUMBER;                      /* for generating initial seed */
 secs      NUMBER;                      /*      */

 -- ------------------------
 -- Private utility FUNCTION
 -- ------------------------
 FUNCTION mult(p IN NUMBER, q IN NUMBER) RETURN NUMBER IS
   p1     NUMBER; 
   p0     NUMBER; 
   q1     NUMBER; 
   q0     NUMBER; 
 BEGIN p1:=TRUNC(p/m1); 
   p0:=MOD(p,m1); 
   q1:=TRUNC(q/m1); 
   q0:=MOD(q,m1); 
   RETURN(MOD((MOD(p0*q1+p1*q0,m1)*m1+p0*q0),m)); 
 END;

 -- ---------------------------------------
 -- Returns random integer between [0, r-1]
 -- ---------------------------------------
 FUNCTION rndint (r IN NUMBER) RETURN NUMBER IS 
 BEGIN -- Generate a random NUMBER, and set it to be the new seed
   a:=MOD(mult(a,+1,m); 

   -- Convert it to integer between [0, r-1] and return it
   RETURN(TRUNC((TRUNC(a/m1)*r)/m1));
 END;

 -- ----------------------------------
 -- Returns random real between [0, 1]
 -- ----------------------------------
 FUNCTION rndflt RETURN NUMBER IS
   BEGIN -- Generate a random NUMBER, and set it to be the new seed
     a:=MOD(mult(a,+1,m);
     RETURN(a/m);
   END;

BEGIN -- Generate initial seed "a" based on system date
 the_date:=SYSDATE;
 days:=TO_NUMBER(TO_CHAR(the_date, 'J'));
 secs:=TO_NUMBER(TO_CHAR(the_date, 'SSSSS'));
 a:=days*24*3600+secs;
END;
/
Method 2 - Produce random # between 0 to 32767 using seconds past midnight 
SELECT
 TRUNC( 
   (TO_NUMBER(SUBSTR(TO_CHAR(TO_NUMBER(TO_CHAR
                (SYSDATE,'sssss'))/86399),-7,7))
                 /10000000)*32767
 ) random 
FROM dual;

بتاريخ:
  • كاتب الموضوع

وارفق لكم المثال بملف مرفق


تحياتي

Tofeee

Creating_Random_Numbers_in_PL_SQL.txt

بتاريخ:

شكرا على هذا البرنامج

بتاريخ:

مشكور جدا لقد قدم فى المنتدى حاجة مماثلة من قبل
و لكن اريد ان اسال سؤال
هل يمكن تحديد اكبر رقم و اصغر رقم لهذه الدالة ؟

تم تعديل بواسطة John

بتاريخ:
  • كاتب الموضوع

شكر على المداخلات لكن كيف رقم اصغر واكبر ، ربما لم افهمك جيد


تحياتي

  • بعد 7 شهور...
بتاريخ:

مشكور مشكور مشكور

  • بعد 4 أسابيع...
بتاريخ:

يسلمو يا استاذ عبد اللطيف
و الله ما قصرت
وان شاء الله يكونوا في ميزان حسناتك

  • بعد 1 شهر...
بتاريخ:

مشكوووووور

  • بعد 5 شهور...
بتاريخ:

thanx tofeeeeeeeeeeeeeeeeee

بتاريخ:

بارك الله فيك ،
جزاك الله خيراً في الدنيا والآخرة ان شاء الله

بتاريخ:

مشكور جدا

  • بعد 1 شهر...
بتاريخ:

تحية طيبة لجميع الاعضاء
أود ان اعرف اين يتم ادراج هذا الكود create or replace package ,procedure , function,..

و لكم جزيل الشكر

بتاريخ:

مشكور

بتاريخ:

بارك الله فيك ،
جزاك الله خير

بتاريخ:

بارك الله فيك على هالمعلومة القيمة ونفعك بعلمك

بتاريخ:

الأخ الكريم
مشكور على عملك و أريد أن ألفت النظر الى أن أوراكل لديها باكيج للتعامل مع القيم العشوائية dbms_random

  • بعد 2 أسابيع...
بتاريخ:

شكراً لك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.