سؤال

تبحث عن مولد عشوائي آمن لخيط آمن ، لقد وجدت فئة مولد Twister Mersenne يقول المؤلف إذا كان مؤشرًا آمنًا:

http://www.umiacs.umd.edu/~yangcj/mtrnd.html

ولكن بعد دراسة الكود لا يمكنني رؤيته إذا كان موضوعًا آمنًا. لا توجد أقفال من أي نوع أو أي شيء يشبه متغير القفل هناك.

هل هذا التنفيذ آمن حقًا؟ إذا كان الأمر كذلك ، فما هو السحر؟

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

المحلول

يبدو أنه آمن مؤشر الترابط ، بمعنى أنه يمكن استخدام كائنين مختلفين من Mersennetwist بشكل متزامن. لا يمكنك استخدام نفس الكائن في موضوعين دون حمايته باستخدام قفل.

أعتقد أن الإصدار C الأصلي الذي يتحدث عنه المؤلف عن المتغيرات العالمية أو الثابتة المستخدمة ، لذا فهو تحسن.

نصائح أخرى

هناك مناقشة حول كيفية صنع مولد أرقام عشوائي من Mersenne Twister متعدد البث في Twister Mersenne Twister متعددة ، وأيضًا تنفيذ (أي رمز المصدر في Fortran 95) على http://theo.phys.sci.hiroshima-u.ac.jp/~ishikawa/prng/mt_stream_en.html. تبدأ الطريقة تدفقات متعددة في نقاط في تسلسل Mersenne Twister يتم فصلها على نطاق واسع ، مما يضمن أن التدفقات المتعددة مستقلة عن بعضها البعض ولن تنتج نفس تسلسل الأرقام العشوائية. لا توجد احتياجات للأقفال وبالتالي رقاب الزجاجة المحتملة في رمز متوازي ؛ يتم الوصول إلى التدفقات المنفصلة بواسطة ID.

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