Есть ли несколько случайных семян и последовательностей
Я хочу сделать игру в микропионе реализацией питона 3.4. Я хочу, чтобы мои монстры контролировались генератором случайных чисел. Я рассматривал возможность передачи текущей ссылки на сетку как начальную и текущую дату, чтобы монстр всегда появлялся сегодня. Завтра поиграйте в игру, и появятся новые монстры.
Проблема в том, что мне нужно использовать random.randint
а также random.randchoice
для игры в кости и других действительно случайных событий.
Если бы я делал это в c, я бы использовал erand48
от <stdlib.h>
и сохранить и поддерживать несколько семян.
Каковы мои решения в Python?
Мне, вероятно, нужна хаотическая функция для управления монстрами. Несколько лет назад мне дал один профессор математики, но это было просто, и из-за округления с плавающей запятой он имел тенденцию к 0.0
2 ответа
Вы можете использовать случайный модуль python для создания случайных объектов для каждого независимого компонента. Пример:
import random
import datetime
today = str(datetime.date.today())
monster_locations = random.seed(a=today)
traps = random.seed(a=(today + '1'))
Каждый из этих отдельных случайных объектов имеет свои независимые начальные числа и может вызываться так же, как и обычный случайный класс:
monster_x = monster_locations.randInt(0,10)
trap_type = traps.randInt(0,4)
Документы о random
упоминание модуля
Функции, предоставляемые этим модулем, на самом деле являются связанными методами скрытого экземпляра
random.Random
учебный класс. Вы можете создавать свои собственные экземплярыRandom
чтобы получить генераторы, которые не разделяют государство.
Казалось бы, есть только одно случайное семя. Ты используешь getstate
а также setstate
сохранить и восстановить предыдущие случайные позиции.
import random
random.seed(1)
for _ in range(5):
print(random.randrange(10), end = ' ')
print('')
save = random.getstate()
random.seed(1)
for _ in range(10):
print(random.randrange(10), end = ' ')
print('')
random.setstate(save)
for _ in range(5):
print(random.randrange(10), end = ' ')
print('')
производит следующий вывод
2 9 1 4 1
2 9 1 4 1 7 7 7 6 3
7 7 7 6 3