Функция random.randint работает не так, как хотелось бы
Всякий раз, когда я запускаю эту программу (не серьезную программу, которая просто возится с понятием вещей), ущерб от monster (monster[1]) просто повторяет одно и то же число снова и снова. Рандомизирует один раз, затем просто повторяет. Я понимаю, ЧТО происходит, но я не понимаю, ПОЧЕМУ это. Вот код (извините, я не знаю, разъясняю ли я свой вопрос или нет . имеет смысл в моей голове, смеется)
РЕДАКТИРОВАТЬ — Мне бы хотелось, чтобы функция monster [1] каждый раз рандомизировалась, но я не знаю, как это сделать, не написав больше кода (т.е. damage=random.randint(5, 15) health-=damage ). Если я напишу это так, это работает нормально. Но я не хочу писать это специально, если у меня есть серия из 10 разных монстров. Я хотел бы просто призвать каждого монстра и запустить его сам, если это имеет смысл.
РЕДАКТИРОВАТЬ # 2: Возможно ли создать кортеж в списке, так как кортежи являются неизменяемыми (т.е. monster=[100, (random.randint(5, 15)), random.randint(15, 30)] этот код не работает, я уже пробовал это, но просто интересно, возможно ли это.
5 ответов
monster[1] присваивается случайное целое число во второй строке вашего кода. Затем он сохраняется в списке monster как целое число. Это целое число останется прежним. Вы должны были бы повторить вызов random.randint(5, 15) , чтобы получить новый номер «урона» или новую сумму опыта.
Хотя я думаю, что это может выходить за рамки того, над чем вы здесь работаете, вы можете захотеть создать монстра class вместо использования массива, а затем иметь метод, который генерирует эти случайные целые числа каждый раз, когда он атаки .
Вот пример класса монстров, который может дать вам представление о том, как он работает.
Затем вы можете создать нового монстра следующим образом.
Посмотрите, какой урон он наносит следующим образом.
И понизьте здоровье монстра следующим образом.
Ну, вы дали monster[1] значение только один раз, во 2-й строке:
Эта строка выполняется только один раз, поэтому «конечно» monster[1] всегда одинаков. Если вы хотите изменить monster[1] (и / или monster[2] ), вам нужно присвоить ему новое значение внутри вашего цикла. Вы сделали это для att ! Вы должны сделать что-то подобное для всех других вещей, которые вы хотите увидеть изменения 🙂
monster=[100,random.randint(5, 15), random.randint(15, 30)]
Когда вы определите этот список, он будет одинаковым во всем. Значения не будут меняться каждый раз, когда вы делаете monster[1] .
Чтобы это исправить, вы можете сделать что-то вроде:
И когда вы идете, чтобы позвонить
Просто вариант. Хотя словарь может быть лучше здесь.
Когда вы звоните на свою линию:
Выполняется функция random.randint (5, 15), а конкретное значение сохраняется в списке.
Я собираюсь представить еще одну альтернативу делать то, что вы хотите, через хранение функции в виде строки; ты можешь написать:
Затем, когда вы хотите получить новое случайное целое число, вы звоните:
И это дает вам другое целое число каждый раз, когда вы вызываете его, потому что функция переоценивается.
(обратите внимание, что если вы хотите повторно использовать случайное значение, например, для его печати, вы должны сохранить его во временной переменной «r», а затем использовать str (r) вместо str (eval (monster [1] ])), так как при первом способе печатается результат вызова, сохраненный в «r», а при последующем способе снова выполняется повторная оценка функции).
Сохраняет 100 и два случайных числа один раз . Например, это может быть представление monster во время выполнения:
И эти числа не меняются, потому что присвоение происходит только один раз . (например, вне цикла)
Источник
Странная работа модуля random.randint
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Почему при вызове генератора как random.randint(-100, 100) он выдает только положительные числа в .
Вывод последовательностей с использованием randint()
Всё задание писать не буду,скажу что оно из книги Саммерфилда. Пишу на чём остановился С.
AttributeError: ‘function’ object has no attribute ‘randint’
У меня не работает модуль рандома Хостинг: pythonanywhere.com Скрин:
Составить программу, которая использует следующие процедуры и функции модуля System: Exit, Chr.
Решение
Если вам однажды еще раз придет в голову что какой-то встроенный модуль странно себя ведят — перекреститесь и сходите к врачу.
P.S. Не люблю ТС-ов, которые создают такие темы, где причиной глюков ставят Python, а не собственную дурную голову.
1. Может вы не правильно поняли? Я не говорю, что в неправильной работе виноват Python, наоборот привожу пример, что в более простом исполнении все работает.
2. Я не из тех пользователей «у которых появляется ошибка и они сразу бегут на форум», просто я уже уйму времени потратил на поиск решения, нигде в книгах не описано вышеупомянутая проблема (я про атрибут класса)
Добавлено через 32 секунды
Добавлено через 3 минуты
Спасибо! Буду искать решение, просто я думал, что экземпляр как бы изолирует все что есть в классе со всеми его модулями, атрибутами и т.д. Изначально обрадовался, что все заработало с одним экземпляром класса и решил добавить побольше, получилось, что получилось.
Написать функцию randint()
Задание из учебника Страуструпа «Принципы и практика использования С++». Напишите простую.
Странная работа Wi-Fi
Вчера начал пропадать интернет т.е. есть, рраз на пол минуты — минуту отключается и снова есть.
Недавно я проапгрейдил комп, поставил новую мать, ссд и проц, и сверху на ссдшник накатил новую.
Источник
Не работает модуль random в visual studio
При работе с «random» в visual studio 2017 у данного модуля отсутствует «randint».
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Всем привет, может кто-то знает,задача такова как создать список псевдослучайных чисел.
Модуль random
Всем привет. Я изучаю питон по книге Эрик Метиз «Изучаем Python». Есть такое упражнение: 9-14 .
Кто разбирается в random’е? Прекрасно знаю о функции, которая может мне сгенерировать 2500.
Модуль random в python
Как сгенерировать 4-значное рандомное число без повторяющихся элементов?
Решение
Вы какой-то неправильный _random вызываете, вот тут https://docs.microsoft.com/en-. ual-studio есть пример и там обычный random
Не работает отладка в Visual Studio Code (по F5) после установки двух версий Python
Всем привет. Возникла необходимость установить версию Python 3.7.2(x64)(на диск E:\) на рабочее.
Не работает отладка кода в Visual Studio pro 2012+qt visual studio add-in 1.2.1
Здравствуйте, скажите пожалуйста в чем проблема, запускаю этот код (F5) в Visual Studio #include.
Работает в Borland Developer Studio 2006 но не работает в Visual Studio 2008, почему?
Вводим строку и меняем в ней первый и последний символы. Всё хорошо в Borland Developer Studio, а.
Здравствуйте. Подскажите, какую программку установить для подсветки синтаксиса и всплывающих.
Источник
Случайный модуль не работает. ValueError: пустой диапазон для randrange () (1,1, 0)
В Python 2.7.1 я импортирую случайный модуль. однако когда я вызываю randint (), я получаю сообщение об ошибке:
Эта ошибка вызвана ошибкой в самом модуле random.py. Я не знаю, как это исправить, не помогает переустановка Python. Я не могу изменить версию.
Может кто-нибудь, пожалуйста, дайте мне код для рабочего модуля или скажите, что мне делать?
4 ответа
Вы назвали randint так:
Это говорит randint возвращать значение, начинающееся с 1 и заканчивающееся на 0. Диапазон чисел от 1 до нуля — это как вы наверняка понимаете, пустой диапазон. Отсюда и ошибка:
random.randint(1, 0) возвращает ошибку, потому что всякий раз, когда вы используете random.randint(a, b) , a должно быть меньше b. Попробуйте изменить random.randint(1, 0) на random.randint(0, 1) , чтобы получить действительный результат.
Нажмите здесь для получения дополнительной информации о random.randint
Поверьте, random работает нормально. Вы звоните randint с b a :
randint возвращает значение между первым аргументом и вторым аргументом.
Если вы сами вызвали randint() , это определенно приведет к ошибке. Вам необходимо предоставить randint() диапазон на выбор. randint(a, b) , где a и b являются целыми числами, должны работать, а если это не так, ваша установка Python не работает.
Это также вызовет исключение, если b меньше, чем a. Думайте об этом, как будто вы предоставляете диапазон: имеет смысл ставить нижнюю границу первой, верно? Поэтому сначала поместите меньшую границу.
Источник
Модуль random
Создайте класс Die с одним атрибутом с именем sides, который содержит значение по умолчанию 6 . Напишите метод roll_die() для вывода случайного числа от 1 до количества сторон кубика. Создайте экземпляр, моделирующий 6-гранный кубик, и имитируйте 10 бросков.
Создайте модели 10- и 20-гранного кубика . Имитируйте 10 бросков каждого кубика .
Просидел два вечера, но решения удовлетворяющего не нашел. Может не внимательно изучал материал. Подскажите где ошибка или что я делаю не так?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Кто разбирается в random’е? Прекрасно знаю о функции, которая может мне сгенерировать 2500.
Всем привет, может кто-то знает,задача такова как создать список псевдослучайных чисел.
Модуль random в python
Как сгенерировать 4-значное рандомное число без повторяющихся элементов?
Здравствуйте. При работе с «random» в visual studio 2017 у данного модуля отсутствует «randint».
Источник