بتاريخ: 16 مارس 200422 سنة comment_3419 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; تقديم بلاغ
بتاريخ: 16 مارس 200422 سنة كاتب الموضوع comment_3420 وارفق لكم المثال بملف مرفقتحياتيTofeee Creating_Random_Numbers_in_PL_SQL.txt تقديم بلاغ
بتاريخ: 16 مارس 200422 سنة comment_3427 مشكور جدا لقد قدم فى المنتدى حاجة مماثلة من قبلو لكن اريد ان اسال سؤال هل يمكن تحديد اكبر رقم و اصغر رقم لهذه الدالة ؟ تم تعديل 16 مارس 200422 سنة بواسطة John تقديم بلاغ
بتاريخ: 17 مارس 200422 سنة كاتب الموضوع comment_3466 شكر على المداخلات لكن كيف رقم اصغر واكبر ، ربما لم افهمك جيدتحياتي تقديم بلاغ
بتاريخ: 19 نوفمبر 200421 سنة comment_18380 يسلمو يا استاذ عبد اللطيفو الله ما قصرت وان شاء الله يكونوا في ميزان حسناتك تقديم بلاغ
بتاريخ: 14 يونيو 200520 سنة comment_39114 بارك الله فيك ، جزاك الله خيراً في الدنيا والآخرة ان شاء الله تقديم بلاغ
بتاريخ: 29 يوليو 200520 سنة comment_43052 تحية طيبة لجميع الاعضاءأود ان اعرف اين يتم ادراج هذا الكود create or replace package ,procedure , function,..و لكم جزيل الشكر تقديم بلاغ
بتاريخ: 30 يوليو 200520 سنة comment_43100 الأخ الكريم مشكور على عملك و أريد أن ألفت النظر الى أن أوراكل لديها باكيج للتعامل مع القيم العشوائية dbms_random تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.