Dr.Mimo عضو جديد
الأبراج الصينية : تاريخ التسجيل : 21/09/2012
العمر : 34
| موضوع: سر خطـــــــــــــــيٍر السبت أكتوبر 13, 2012 1:53 am | |
| السلام عليكم
يعتقد أغلب مستعملي لغة السي أن دالة rand التي يستعملونها غالبا في برمجة الألعاب والتطبيقات الأخرى عشوائية لكن بعد أن قام أحد الإخوة بفحص بعض الملفات الخاصةباللغة وكان يراجع بعض الدوال شده الفضول إلى معرفة كيفية عملها فاكتشف:
أن هذه الدالة يمكن تنبأ نتائجها لأنها تعمل وفق روتين معين وجسم الدالة يكون كالتالي فرضا:
long double rand() { return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);}
والمتحول holdrandيعرف كمتحول global holdrand = (long)seed;
يمكنكم صنع دالتكم العشوائية الخاصة بتغيير قيمتة المتحول holdrand عند كل استدعاء بدلا من تركها على حالها كي تكون نتائجكم أكثر عشوائية ...
| |
|