Есть ли несколько случайных семян и последовательностей - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу сделать игру на микропионе реализацией питона 3.4.Я хочу, чтобы мои монстры контролировались генератором случайных чисел.Я рассматривал возможность передачи текущей ссылки на сетку как начальную и текущую дату, чтобы монстр всегда появлялся сегодня.Завтра поиграйте в игру, и появятся новые монстры.

Проблема в том, что мне нужно использовать random.randint и random.randchoice для игры в кости и других действительно случайных событий.

Если бы я делал этов c я бы использовал erand48 из <stdlib.h> и сохранил бы и поддерживал несколько семян.

Какие у меня решения в python?

Мне, вероятно, нужна хаотическая функция для управления монстрами.Несколько лет назад мне подарил один профессор математики, но это было просто, и из-за округления с плавающей запятой он имел тенденцию к 0.0

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Документы random модуля упоминания

Функции, предоставляемые этим модулем, на самом деле являются связанными методами скрытого экземпляра класса random.Random.Вы можете создать свои собственные экземпляры Random, чтобы получить генераторы, которые не разделяют состояние.

0 голосов
/ 03 декабря 2018

Может показаться, что только одно случайное семя.Вы используете 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 
0 голосов
/ 29 ноября 2018

Вы можете использовать случайный модуль python для создания случайных объектов для каждого независимого компонента.Пример:

import random
import datetime

#to set the random number based off the date
today = str(datetime.date.today())

monster_locations = random.Random(today)
traps = random.Random((today + '1'))

Каждый из этих отдельных случайных объектов имеет свои собственные независимые начальные числа и может вызываться так же, как обычный случайный класс:

monster_x = monster_locations.randInt(0,10)
trap_type = traps.randInt(0,4)
...