سؤال

هذا هو تطبيق اختبار عينة أحاول تعلم وظائف حلقة متوازية giveacodicetagpre.

فهمي حول foreach بالتوازي هو أنه سيدير طريقة Processrandom مع معلمة من القائمة بالتوازي.جميع المتغيرات داخل هذه الطريقة ستكون منفصلة وسوف تعمل على استقلالية بعضها البعض.ولكن عندما أرى أنني أرى أن القيمة العشوائية المخزنة في عدد صحيح "أنا" يعرض نفس الشيء بالنسبة لزوجين من قائمة الأشهر وواحدة أو قد يكون 2 قيم عشوائية مختلفة.لماذا هذا يتصرف من هذا القبيل.لا ينبغي أن الحلقة الموازية إنشاء قيمة عشوائية جديدة لكل تكرار.إذا كنت تستخدم التحوليات وتحديد Maxdegree من التوازي إلى 1 ثم أرى قيم مختلفة في متغير "أنا"

يرجى توجيه لي في فهم الحلقات الموازية.

هل كانت مفيدة؟

المحلول

يحدث هذا لأن عشوائي غير عشوائي حقا ولكن عشوائي زائف (http://msdn.microsoft.com/en-us/library/system.random.aspx ).تم ذكر هذه المشكلة بالضبط في تصريحات مقالة MSDN.عند إنشاء مثيلات متعددة في نفس الوقت ويتم استدعاء الاتصالات () على كلا الحالتين، فمن الممكن أن ينتهي بهم الأمر بنفس النتيجة (بسبب دقة ساعة النظام المحدودة).للتعامل مع هذا، يجب أن ننشئ بذرة فريدة لكل تكرار.إلى هذه الغاية، يمكنك القيام بشيء مثل هذا (ولكن هناك العديد من الطرق للبشرة هذه القط): giveacodicetagpre.

** لاحظ أن هذا المثال لا يضمن التفرد ولكنه يظهر للتو كوسيلة لتوليد قيمة المصنفة **

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top