В Python, что является лучшим способом генерации некоторого случайного числа с использованием определенного семени, но без повторного глобального состояния? В Java, вы могли бы просто написать:Установите случайное семя временно, например «new Random()»
Random r = new Random(seed);
r.nextDouble();
и стандарт Math.random()
не будут затронуты. В Python лучшее решение, которое я вижу, это:
old_state = random.getstate()
random.seed(seed)
random.random()
random.setstate(old_state)
Это идиоматический Python? Это кажется намного менее чистым, чем Java-решение, которое не требует «восстановления» старого семени. Мне бы хотелось узнать, есть ли лучший способ сделать это.
К сожалению, я пропустил этот комментарий к [случайным документам] (http://docs.python.org/library/random.html): «Вы можете создавать собственные экземпляры Random для генерации генераторов, которые не доля государства ". Благодаря! –
@BenAlpert, да, я тоже, когда я пошел проверять их дважды. Но я знал, что раньше видел «Случайный» в «dir (random)», и он был там в источнике, когда я смотрел. Не уверен, почему сам класс «Random» не имеет собственного листинга в документах. – senderle
Мне всегда приятно, когда кто-то получает много голосов, просто указывая, что находится в документации ... включая [я] (http://stackoverflow.com/a/3909907/355230). То же самое касается вопросов, на которые можно было бы ответить, читая его ... – martineau