يمكن توليد أرقام عشوائية غير متكررة في JS باستخدام تقنيات مختلفة. في الأصل، كان النهج هو التحقق مما إذا كان الرقم الذي تم إنشاؤه حديثًا قد تم إنشاؤه بالفعل عن طريق إضافته إلى مصفوفة ومقارنته به. ومع ذلك، يمكن أن يؤدي هذا إلى خطأ "تم تجاوز الحد الأقصى لحجم مكدس الاستدعاءات" بسبب المكالمات المتكررة المفرطة.
الحل الفعال هو إنشاء قائمة عشوائية من الأرقام مرة واحدة والعمل من خلالها بشكل تسلسلي. يلغي هذا الأسلوب الحاجة إلى الاستدعاءات المتكررة ويضمن عدم التكرار.
إليك مثال على استخدام Fisher–Yates Shuffle:
function shuffle(array) {
var i = array.length,
j = 0,
temp;
while (i--) {
j = Math.floor(Math.random() * (i 1));
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
var ranNums = shuffle([1,2,3,4,5,6,7,8,9,10]);
بدلاً من ذلك، يمكن استخدام المولدات لهذا الغرض:
function* shuffle(array) {
var i = array.length;
while (i--) {
yield array.splice(Math.floor(Math.random() * (i 1)), 1)[0];
}
}
var ranNums = shuffle([1,2,3,4,5,6,7,8,9,10]);
ranNums.next().value; // first random number from array
ranNums.next().value; // second random number from array
...
توفر هذه التقنيات طرقًا فعالة لإنشاء أرقام عشوائية غير متكررة في JavaScript، مما يؤدي إلى التخلص من المشكلات المتعلقة بالاستدعاءات المتكررة المفرطة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3