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

ماذا تعني علامة النسبه المئويه ؟

بدأه MiNi.SpIdEr في 17 أغسطس 2009 · 16 رد · 2,299 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اعتقد السؤال واضح من العنوان

ماذا تعني علامة النسبه المئويه في البي اج بي ؟

الكود هو في عمليه اظهار رقم عشوائي بين رقمين

rand()%(count($lines))

حيث المتغير

$lines

هو عدد السطور في ملف

وما هو الاختلاف عن الكود

rand(0,count($lines))

واذا قمت بأستعمال

$no_0 = rand()%(count($lines));
$no_1 = rand()%(count($lines));
$no_2 = rand()%(count($lines));

كيف اضمن ان لا تكون الارقام الناتجه متشابهه ؟

انا احاول مع هذا الكود ولم تظهر لي نتيجه متشابه ع العكس عند استخدام الكود الي بدون % تظهر فل لها علاقه؟

حاولت ان ابحث لكن لم اجد شي :blush:

تم تعديل هذه المشاركة بواسطة MiNi.SpIdEr في 17 أغسطس 2009 في 15:53

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#2
rand(0,count($lines))

الدالة rand تستخدم في توليد رقم عشوائي ضمن مجال أنت تحدده لها فلو أعطيت لها 44-80 فإنها سترجع لك قيمة من هذا المجال .

اقتباس
كيف اضمن ان لا تكون الارقام الناتجه متشابهه ؟

إن كنت تستعمل ال hashing في برنامج فنسبة ظهور رقمين متشابهين ضيل جدا .

كيف تنشئ كلمة سر عشوائية بإستخدام PHP

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#3

شكرا لك

بس انت لم تجب ع سؤال او يمكن انا ما وضحته بشكل جيد ؟

ما هو عمل ال % انا اعرف عمل الداله بس لقيت هذا الكود وبدي اعرف شو الفرق بينه وبين الكود الي انا كتبته

ولا استعمل الهاش او اشفر النص او امرره ع اي شيء لاني بحاجه لاستخراج 3 ارقام عشوائيه من ارقام السطور الي بالملف

والكود تمام كل الي اريد منعه هو التكرار وهذا بسيط ايضا بأضافه شرط بسيط لمقارنة الارقام الناتجه ايضا

السؤال المهم هو علامة النسبه المئويه ماذا تعني ؟ وما فرق الكودين الي معها والي بدونها ؟

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#4

% تعني Modulus اي باقي القسمة

I Say Nothing

#5

حسب علمي مافيه اي فرق.... (الا اذا كانت الداله rand تعمل داخليا بشكل مختلف حسب تعامك معها... او كان اعلى رقم ممكن لها اقل من lines في مثالك... و كلا الحالتين غالبا غير صحيحتين)

من ناحيه اخرى... برايي استمر بتوليد ارقام عشوائيه حتى تحصل على ارقام مختلفه (اذا كنت تفضل ان الارقام مختلفه)

لان اذا كان عدد الاسطر 100... الاحتمال 3% ان يكون عندك رقم متكرر على الاقل (واحد من كل 30.... نسبه عاليه)

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#6

شكرا جزيلا

على كل حال الكود الي يحوي ع % افضل لا اعرف كيف لكن بالكود الي بدونها مرات يكون الناتج 7 مثلا معدد السطور 7 لكن الحقيقه ان الكود يبداء من ال 0 يعني يكون 6

بس الكود الي يحوي ع % يعمل بدون هل شيء !!

اقتباس
(الا اذا كانت الداله rand تعمل داخليا بشكل مختلف حسب تعامك معها... او كان اعلى رقم ممكن لها اقل من lines في مثالك... و كلا الحالتين غالبا غير صحيحتين)

لماذا غير صحيحتين ؟

وشكرا مره اخرى

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#7

انا اسف.... ما كنت مركز عند قراءه الكود.... المفروض تغير في الكود بدون % حتى يصير

 rand(0,count($lines)-1)

حتى يكون لهم نفس ال range (ملاحظتك كانت صحيحه)

غير صحيحتين غالبا لان... بالنسبه للجزء الاول.. لان ال docs ما تذكر اي شي بهذا الخصوص... اما الجزء الثاني.. لان العدد الاقصى ل rand() المفروض يكون عالي جدا اعلى من اكبر عدد للاسطر ممكن تستخدمه....

تم تعديل هذه المشاركة بواسطة Ryn في 18 أغسطس 2009 في 17:41

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#8
rand(0,count($lines)-1)

نعم قمت بشيء مثل بهذا سابقا D: لكني اردت ان اعرف علامة % وقتها

اما

اقتباس
غير صحيحتين غالبا لان... بالنسبه للجزء الاول.. لان ال docs ما تذكر اي شي بهذا الخصوص... اما الجزء الثاني.. لان العدد الاقصى ل rand() المفروض يكون عالي جدا اعلى من اكبر عدد للاسطر ممكن تستخدمه....

اسف لم افهم بخصوص ماذا ؟ اما لخصوص عدد السطور فهو قليل جدا طبعا ممكن ان يكون كحد اقصى بالعشرات لا غير

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#9

صدقني ممكن تتجاهل الجزء هذا... انا تقريبا افكر بصوت عالي.....

انا فقط كنت اقول ما اعتقد ان rand تعمل بشكل مختلف اذا ارسل لها حد اعلى و ادنى... او حسبت باقي القسمه على اعلى عدد مسموح... لانه لايوجد شي في ال documentation لل php يذكر الجزء هذا ... (لكن طبعا ممكن تكون تختلف... لابد نفتح المحرك حتى نتاكد :) )

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#10

هههههههههههههههه خلاص انا متجاهله

لكن عندي مشكله اخرى تذكر اني قلت

اقتباس
لاني بحاجه لاستخراج 3 ارقام عشوائيه من ارقام السطور الي بالملف

والكود تمام كل الي اريد منعه هو التكرار وهذا بسيط ايضا بأضافه شرط بسيط لمقارنة الارقام الناتجه ايضا

بس لما جيت اطبقها ماصارت !!! لا اعرف السبب لكن حاوت بالافكار الي جتني اني امنع تطابق الارقام

بس الكود ؟؟؟ مااشتغل صح

لتوضيح اكثر عندي هذه المتغيرات الثلاثه

$no_0 = rand()%(count($lines));
$no_1 = rand()%(count($lines));
$no_2 = rand()%(count($lines));

كيف اضمن عدم تكرر ارقامهم ؟ كيف يمكن ان اكتب شرط لذالك

ممكن كيف ؟ :lol:

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#11

فيه طريقتين فكرت فيهم....

الاولى، سهله التطبيق... لكن الكود هذا سيء احيانا... اسوأ حاله لو كان عدد الاسطر 4 مثلا.. على اي حال

$no_0 = rand()%(count($lines));

while(true){
$no_1 = rand()%(count($lines));
if($no_0!=$no_1)break;
}

while(true){
$no_2 = rand()%(count($lines));
if($no_1!=$no_2 && $no_0!=$no_2)break;
}

الثانيه اسهل لكن الكود معقد شوي... (الان باقي ساعه على فطور اول يوم في رمضان... حاول تفهمه من نفسك ممكن اشرحه وقت ثاني :) )

$no_0 = rand()%(count($lines));

$no_1 = (rand()%(count($lines)))-1;
if($no_1>=$no_0)$no_1++;

$no_2 = (rand()%(count($lines)))-2;
if($no_2>=$no_0)$no_2++;
if($no_2>=$no_1)$no_2++;

تم تعديل هذه المشاركة بواسطة Ryn في 22 أغسطس 2009 في 17:32

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#12

ههههههههه

شكرا سأوضح الكود الثاني ع قد فهمي

$no_0 = rand()%(count($lines)); //لاظهار اورل رقم عشوائي فقط

$no_1 = (rand()%(count($lines)))-1; //رقم عشوائي ناقص 1 ولا اعرف لماذا :D
if($no_1>=$no_0)$no_1++; //اذا كان الرقم الناتج اكبر من او يساوي الرقم الاول اضف رقم 1 للرقم الثاني

$no_2 = (rand()%(count($lines)))-2; //استخراج رقم ثالث عشوائي مع طرح 2
if($no_2>=$no_0)$no_2++; //اذا كان يساوي الرقم الاول اضف له 1
if($no_2>=$no_1)$no_2++; //اذا كان يساوي الرقم الثاني اضف له 1

اضن ان من مساؤ الكود اناا ممكن ان نحصل ع رقم بالسالب ؟ ويكون غير موجود ؟

لذالك اضن ان الكود الاول جيد جدا وهو بالضبط مثل ما حاولت اعمله وفكرت فيه لكني لم اكن اعرف هذا

while(true)

:blush:

مع اني لم اعرف ما هو المشكله عندما يكون عدد السطور 4 !!!!

يعني انا حسب ما فهمت الكود اناا نأخذ قيمه للرقم الاول عشوائيا

ثم تأخذ قيمه قانيه للرقم الثاني مع تحقق اذا ما كان الرقم الناتج يشبه الرقم الاول (يعني بقى عندنا رقمين)

نقوم بنفس العمليه في الرقم الثالث للتحقق من انه لا يشابه الاول او الثاني وبهذا يبقى لدينا رقم واحد

ارى انها تعمل حتى في حالة وجود 3 سطور فقط ؟

عموما هو اكثر من اربع وقابل للزياده فلا مشكله

ورمضان كريم عليك يمكن الصوم مأثر شوي :lol:

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#13

فعلا الجوع اثر علي.... الطرح لابد يتم داخل الاقواس... الكود كالتالي

$no_0 = rand()%(count($lines));

$no_1 = (rand()%(count($lines)-1));
if($no_1>=$no_0)$no_1++;

$no_2 = (rand()%(count($lines)-2));
if($no_2>=$no_0)$no_2++;
if($no_2>=$no_1)$no_2++;

على اي حال... بالنسبه للكودين (بعد التعديل!) كلاهم يشتغل في كل حاله :) مافيه اي ارقام سالبه او خارج المجال (طبعا بشرط يكون عدد الاسطر الاصلي 3 او اكثر)

مشكله الاول... "نظريا" كلما نقص عدد الاسطر زاد احتمال انه يعمل لك execution time out .... لانه تخيل عندك 3 اسطر فقط... الرقم الاول 1 والثاني 3 ... الكود راح يحاول حتى يحصل على 2.... فيه احتمال 66% في كل محاوله انه يفشل... لو حاول 1000 مره اعتقد راح يسوي timeout .... اعرف ان 100 محاوله احتمال قليل... لكن ........... فيه طريقه لحل المشكله بكود اذكى!!

بالنسبه للثاني... الفكره كالتالي... (تخيل مدى الاعداد من 1 الى 10 للتسهيل -- بدل ما يكون المثال من x الى x+n)... :)

1- الرقم الاول مافيه اي مشاكل طبعا (مثلا كان 5)

2- بالنسبه للرقم الثاني... بدل ما نختاره بين 1 الى 10... نختاره بين 1 الى 9... و نضيف له 1 اذا لم يكن اقل من العدد الاول.... بمعنى بعد العمليه هذي المدى الافتراضي للعدد في حالتنا 1 الى 4 و 6 الى 10 ... وهو بالضبط المطلوب..

بالنسبه للمثال.... نختار عدد بين 1 و 9.... اذا كان بين 5 و 9 نضيف له واحد!

3- الرقم الثالث نفس فكره الثاني بالضبط! لكن كاننا ازلنا رقمين من المدى(الاول والثاني...) ...

بالنسبه للمثال لو كان الاول 5 والثاني 7... نختار عدد بين 1 و 8 ...

اولا نضيف له واحد اذا كان بين 5 و 8

ثم (بعد الاضافه) نضيف له واحد اخر اذا كان بين 7 و 9 ((بمعنى لو كان اساسا بين 6 و 8))

يكون المجال بالتالي 1-4 و 6 و 8-10

-while(true) و while(1) عباره عن infinite loop حتى تصل لامر break

-سؤالك ذكرني بماده discrete math في الجامعه ... كان ممتع حله :)

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#14

جميل جدا

وافضل الكود الثاني مجرد مقتع فيه اكثر واراه اسهل لعمليه بسيطه وعدد السطور اكبر من 3 يعني احتمال التايم اوت ليس معدوم بس شبه مستحيل

(شنو هل حض اذا جرب 1000 مره وما لقى رقم ما متشابه بين 7 ارقام مثلا ههههه)

شكرا لك اما بالنسبه while(true) فهي جديده علي وجميله جدا استطعت اعرف ماذا تعني بس شكرا ع التوضيح اكد الفكره D:

جيد اني ذكرت بأيام الدراسه ههههه انا ان شاء الله بدرس برمجه مش اكيد تكون برمجة ويب!

مع اني لا اطيق الرياضيات ابدا !!!

D:

شكرا لك

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#15

عفوا!

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#16

معلش جيت متأخر .... زي إللي فهمت إنكم بتحاولوا تعملوا بعثرة لعدد الأسطر !! صح ؟

إذا كان الأمر كذلك أﻻ يوجد دالة تقوم بهذا الأمر مثل أن تجعل الأسطر في مصفوفه وتقوم ببعثرة المصفوفه ثم سردها ...

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#17

نختار ثلاثه من عدد مجهول من الاسطر، بحيث تكون unique (اختيار بدون تكرار)

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

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