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

ممكن مساعدة بخصوص Rand() And Time(0)

بدأه ebrahim hammad في 9 يناير 2009 · 4 رد · 585 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

يعني الفانكشن

rand()

تولد الأرقام .. بس مثلا اذا انا ابيها تولد أرقام من عدد معين إلى عدد معين آخر

على سبيل المثال من 20 إلى 29

وابيها مثلا تولد ليي 100 رقم وكلهم من 20 الى 29 ..

ممكن أحد عنده فكرة يساعدني لاني حاولت ولازلت احاول

وعندي مشكلة في فهم دالة

time(0)

مثلا شوفو هذي الفانكشن

int ndigit(int n)

{

int start = pow(10,n);

int end = pow(10,n)-1;

int sign = (time(0) + rand() ) % 2;

int num = (time(0) + rand() ) % start;

if (sign) num *= -1;

return num;

}

وظيفتها تاخذ عدد الـ digits

من اليوزر وتطبع له عدد اما موجب أو سالب فهل هذا المثال سليم وصحيح 100%

واذا كان مو صحيح ياليت بمثال أصح ..

واذا كان صح ياليت توضيح كل سطر ووظيفته في المثال

وشاكر لكم تعاونكم

:D

#2
rand()%30 +6

من 5 الى 30

tvquran_6.gif

#3

التابع rand يولد اعداد شبة عشوائية pseude-random numbers

حيث سلسلة الاعداد المولدة بواسطة الاستداعات المتكررة للتابع rand على انها عشوائية وتعيد هذي السلسلة نفسها في كل مرة يتم فيها التشغيل .

لكن يمكن ان نولد سلسلة جديدة في كل مرة يتم فيها التشغيل وذالك بواسطة التابع srand من توابع المكتبة المعيارية.

الذي يأخذ وسيط من النوع int ويقوم بعملية اعادت تنظيم التابع rand

طيب نعدل على المثال السابق ونطلب من المستخدم ادخال عدد لعملية التنظيم

#include <iostream>
#include <math.h>//math library
#include <stdlib.h>
#include <iomanip>

using namespace std;

int main()
{
	int i;
	int number;
	cout<<"Enter number \n";
	cin>>number;
	srand(number);
	for (i =1;i<=20;i++)
	{
		cout<<setw(10)<<(1 + rand() %6);//1 to 6
		if (i % 5==0)
		cout<<endl;

	}
	system("pause");

		return 0;
}

طيب جررب تشغيل البرنامج اكثر من مررة وشووف.

مع ادخال ارقام وتكريرها اذا ادخلت نفس الرقم راح تحصل على نفس النتائج....

اوكي كلوو حاكة تمام

طيب اذا بغينا في كل مررة توليد ارقام عشوائية دون تدخل المستخدم

srand(time (NULL) );

هذا يعطي قيمة ساعة الكمبيوتر كوسيط لي srand حيث يعيد التابع time الي يأخذ الوسيط NULL الوقت الحالي لساعة الكمبيوتر بالثواني .ويقوم بتحويلها الى عدد صحيح (int) ليستخدمها التابع srand .

طيب نشووف المثال

ملاحظة: يجب ان يحتوى الكود على المكتبة

#include <time.h>

#include <iostream>
#include <math.h>//math library
#include <stdlib.h>
#include <iomanip>
#include <time.h>

using namespace std;

int main()
{
	int i;

	srand(time (NULL) );
	for (i =1;i<=20;i++)
	{
		cout<<setw(10)<<(1 + rand() %6);//1 to 6
		if (i % 5==0)
		cout<<endl;

	}
	system("pause");

		return 0;
}

منقووول

#4

شكرا اخي على الرد المفيد جدا .. ولكني اواجه مشكلة في حال رغبتي في تخزين القيمة العشوائية في Array فانها تتخزن في الـ array بقيمة أخرى وهي قيمة الوقت + قيمة الرقم العشوائي .. مع انني في حالة عمل طباعة للجواب يظهر الناتج سليم لكن في حال تخزينه وطباعته يظهر الرقم الآخر فهل هناك من خلل أو حل ؟

#5

ضع االكود هنا.

tvquran_6.gif

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