سؤال

في عرض في django أنا استخدم random.random(). وبعد كم مرة يجب علي الاتصال random.seed()ب مرة واحدة لكل طلب؟ مرة واحدة لكل موسم؟ مرة واحدة بينما يعمل خادم الويب؟

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

المحلول

يتصل random.seed() نادرا إذا على الإطلاق.

أن تكون عشوائيا، يجب أن تسمح بتشغيل مولد الأرقام العشوائية دون لمس البذور. تسلسل الأرقام هو ما عشوائي. إذا قمت بتغيير البذور، فستبدأ تسلسل جديد. قد لا تكون قيم البذور عشوائية للغاية، مما يؤدي إلى مشاكل.

اعتمادا على عدد الأرقام التي تحتاجها، يمكنك التفكير في إعادة ضبط البذور من /dev/random دوريا.

يجب أن تحاول إعادة ضبط البذور قبل أن تستخدم البذور السابقة. لا تحصل على 32 بت كامل من العشوائية، لذلك قد ترغب في إعادة تعيين البذور بعد إنشاء رقمين 2 ** 28.

نصائح أخرى

لا تحدد البذور.

المرة الوحيدة التي ترغب في ضبط البذور إذا كنت ترغب في التأكد من أن نفس الأحداث تستمر في حدوث ذلك. على سبيل المثال، إذا كنت لا ترغب في السماح للاعبين بالغش في لعبتك، فيمكنك حفظ البذور، ثم قم بتعيينه عند تحميل لعبته. ثم بغض النظر عن عدد المرات التي يحفظونها + إعادة تحميل، فإنها لا تزال تعطي نفس النتائج.

يعتمد ذلك حقا على ما تحتاجه الرقم العشوائي ل. استخدم بعض التجريب لمعرفة ما إذا كان يحدث أي فرق. يجب أن تنظر أيضا في أن هناك بالفعل نمط للأرقام العشوائية الزائفة. هل تحدث فرقا لك إذا كان شخص ما بإمكانك تخمين الرقم العشوائي التالي؟ إذا لم يكن الأمر كذلك، فقم البذور مرة واحدة في بداية الجلسة أو عند بدء تشغيل الخادم لأول مرة.

من المحتمل أن يكون البذور مرة واحدة في بداية الجلسة أكثر منطقية، IMO. وبهذه الطريقة سيحصل المستخدم على مجموعة من الأرقام العشوائية الزائفة طوال جلستها. إذا كنت البذور في كل مرة يتم فيها تقديم صفحة، فهي ليست مضمونة هذا.

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