Уведомления

Группа в Telegram: @pythonsu

#1 Июль 24, 2016 20:45:17

SRGB
Зарегистрирован: 2016-07-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль random

Ув. корифеи, подскажите пожалуйста, какой из существующих методов распределения модуля random подойдет. Задача следующая:
A=1, B=0 вероятность выпадения A = X%, при N… итерациях. X и N переменные. Нужно чтоб генерировалось одно число (не список) по заданным параметрам.
Пока в голову приходит только сгенерировать список для A длинной в AL=N*X и B длинной в N-AL, сложиьт и перемешать shuffle. Но думаю что этот топорный велосипед н есамый правильный.

Офлайн

#2 Июль 27, 2016 18:57:18

don_pedro
Зарегистрирован: 2016-07-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль random

from random import *
#Создаем кортеж из 100 едениц или нулей где х-количество едениц.
randx=lambda x:choice((1,)*x+(0,)*(100-x))
print(randx(55))
Если я правильно вас понял.

Офлайн

#3 Июль 27, 2016 19:36:14

SRGB
Зарегистрирован: 2016-07-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль random

По сути очень похожее, решение, с теми же минусами, в процентах нет дробей, но это можно решить увеличив кол-во единиц/нулей до десяти тысяч, но это все таки расход ресурсов, и если использовать эту схему к примеру для генерации критов/уворотов то мне кажется уже после тысячного игрока будут ощутимые проблемы с ресурсами, ведь в памяти будут храниться как минимум по два кортежа длинной в 10000 знаков у 1000 игроков. Хотелось бы чтоб 55% вероятность события вычислялось без кортежей или списков. Но все равно спасибо мой вариант был таким:
n = int(input('Введите вероятность в процентах:'))
if n>100:
print('Всего 100%')
n = int(input('Введите вероятность в процентах:'))
my_list_orel = * n
print(my_list_orel)
reska_ver = 100 - n
my_list_reska = * reska_ver
print(my_list_reska)
total_list = my_list_orel + my_list_reska
random.shuffle(total_list)

Офлайн

#4 Июль 27, 2016 20:01:27

don_pedro
Зарегистрирован: 2016-07-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль random

Кортеж существует только один из него и вибираем при вызове. такчто не заморачивайтесь

Офлайн

#5 Июль 28, 2016 07:32:30

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Модуль random

SRGB
random
Для randint вероятностное распределение в районе 40 процентов для средних значений диапазона занимающих 20% этого диапазона, не скажу за весь random, но проблемы могут начаться уже из-за этого. Я к тому что распределение не нормальное.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version