From 4bda05d9eb1ef77e8456d393bc2a080904f7c65f Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Mon, 25 Mar 2013 11:22:56 -0400 Subject: [PATCH] Fix seed assignment priority and add clearer documentation --- common/lib/capa/capa/capa_problem.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/common/lib/capa/capa/capa_problem.py b/common/lib/capa/capa/capa_problem.py index 0b181e8558..68f80006f6 100644 --- a/common/lib/capa/capa/capa_problem.py +++ b/common/lib/capa/capa/capa_problem.py @@ -111,7 +111,14 @@ class LoncapaProblem(object): raise Exception() state = state if state else {} - self.seed = seed if seed is not None else state.get('seed', struct.unpack('i', os.urandom(4))[0]) + + # Set seed according to the following priority: + # 1. Contained in problem's state + # 2. Passed into capa_problem via constructor + # 3. Assign from the OS's random number generator + self.seed = state.get('seed', seed) + if self.seed is None: + self.seed = struct.unpack('i', os.urandom(4)) self.student_answers = state.get('student_answers', {}) if 'correct_map' in state: self.correct_map.set_dict(state['correct_map'])