
Маришка
16.03.2017
16:26:08
велп
точно

Aragaer
16.03.2017
16:26:12
надо res = rand2()+rand2()-1
но впрочем нет

Google

Маришка
16.03.2017
16:26:20

Max
16.03.2017
16:26:22
Я один не могу перейти и поглядеть на чей-то профиль?

Igor
16.03.2017
16:26:26
ой, да

Tony
16.03.2017
16:26:26

I
16.03.2017
16:26:27
хз, у меня в стране LI вообще не пашет(

Aragaer
16.03.2017
16:26:45
(rand2()-1) + (rand2()-1)*2
вот

Igor
16.03.2017
16:26:55

Aragaer
16.03.2017
16:27:00
блин, не люблю когда отсчет идет с единицы 8)

Max
16.03.2017
16:27:05

Маришка
16.03.2017
16:27:11

Aragaer
16.03.2017
16:27:11
и еще +1, да

Spacehug
16.03.2017
16:27:38
А, скажем, брать rand2() кратное 3-м число раз, потом % 3 + 1?

Google

Маришка
16.03.2017
16:28:01

Tony
16.03.2017
16:28:02

I
16.03.2017
16:28:12

Aragaer
16.03.2017
16:28:39
кык это?

Spacehug
16.03.2017
16:28:51

Aragaer
16.03.2017
16:28:56
это случайный набор битов - равновероятно даст 00, 01, 10 и 11

Max
16.03.2017
16:29:35

I
16.03.2017
16:30:45
rand2() -1 выдает равновероятно 0 и 1
но если ты их складываешь - вероятность на выходе получить 1 больше
00
01
10
11

Spacehug
16.03.2017
16:30:56
Неа
Чем не катит (rand2() + rand2() + rand2()) % 3 + 1?

melancholiac
16.03.2017
16:31:18
зачем генерить рандом так сложно?

Aragaer
16.03.2017
16:32:14

melancholiac
16.03.2017
16:32:16
это же сложно

Aragaer
16.03.2017
16:32:26
3д2 дает исходы 3, 4, 5 и 6, причем вероятности у них 1/8, 3/8, 3/8, 1/8

Spacehug
16.03.2017
16:33:15
М, мгм

Aragaer
16.03.2017
16:33:50
если добавить %3, то исходы 3 и 6 схлопываются и получается 2/8, 3/8, 3/8

I
16.03.2017
16:35:42

Aragaer
16.03.2017
16:36:08
то, что первый ранд дает 0 или 1, а второй дает 0 или 2

Google

Aragaer
16.03.2017
16:36:25
и получаются 4 равновероятных исхода - 0, 1, 2, 3

I
16.03.2017
16:36:29
а, там так скобки расставлены

Aragaer
16.03.2017
16:36:44
угу

I
16.03.2017
16:39:08
ну так тогда
rand2 -1 + (rand2-1)*2 -
0 50% случаев
1 25%
2 25%

Aragaer
16.03.2017
16:39:35
мм
нет

I
16.03.2017
16:39:47
пруфы

Aragaer
16.03.2017
16:39:56
0 25%, 1 25%, 2 25%, 3 25%

Igor
16.03.2017
16:40:19
гггг

Aragaer
16.03.2017
16:40:32
ну если первый ранд выпал 2, второй выпал 2, то в результате будет 2-1+(2-1)*2 = 3

I
16.03.2017
16:40:46
rand2() -1 выдает 0 или 1
(rand2() -1)*2 выдает 0 или 2

Aragaer
16.03.2017
16:41:01
ну и в сумме все варианты от 0 до 3

Subbotin
16.03.2017
16:41:41
(R2 +r2*2 +r2*4)%3 +1

Aragaer
16.03.2017
16:41:52
нет
*4 тогда уж

Subbotin
16.03.2017
16:42:17
Нет

Aragaer
16.03.2017
16:42:18
вместо *3

Subbotin
16.03.2017
16:42:25
Ну добавь +1
Поправил

I
16.03.2017
16:42:51

Google

Spacehug
16.03.2017
16:43:00

Aragaer
16.03.2017
16:43:13
8 исходов - 6, 7, 8, 9, 9, 10, 11, 12

Subbotin
16.03.2017
16:43:16
Опс

I
16.03.2017
16:43:27
хотя сейчас я переприкину

Subbotin
16.03.2017
16:43:32
Опс

Aragaer
16.03.2017
16:43:37
если умножать на 4, то исходы 7, 8, 9, 10, 11, 12, 13, 14

Subbotin
16.03.2017
16:43:40
Я опять поправил
Прогоните кто-нить на компе мое

Admin
ERROR: S client not available

Spacehug
16.03.2017
16:43:57
Есть дебильное решение типа кинуть rand2() трижды, выбрать номер попытки где 2. Если 2 несколько раз - перебрасывать

Aragaer
16.03.2017
16:43:59
на это накидываешь %3 и получаешь разные варианты

Subbotin
16.03.2017
16:44:01
Я с телеыона

Aragaer
16.03.2017
16:44:46
короче, надо найти такую степень двойки, которая достаточно велика, а при делении на 3 дает остаток 1
... любая четная на самом деле
дальше делаем sum((rand2()-1)*2**i for i in range(n)) и получаем все возможные варианты до 0 до (2^n)-1
если последнее число выпало, то перекидываем, иначе берем по модулю 3 и добавляем единицу
получаются равные вероятности
вариант с n=2 это "кинуть два раза, второй раз умножать на 2, если в итоге получилось 2 и 2, то перекинуть"
но там слишком высокая вероятность перекидывания
прям такое ощущение, что вы кубики ни разу в жизни не кидали

Google

Aragaer
16.03.2017
16:49:32
а как же эмулировать д20 при наличии только д6 разного цвета?

Qman
16.03.2017
16:53:35

Aragaer
16.03.2017
16:53:38
как бы мы ни пытались извратиться, каждый бросок удваивает число возможных исходов. Никакая степень двойки не будет кратной числу 3. Значит остается только отбрасывать какой-то хвост = перебрасывать все заново в некоторых случаях.

Spacehug
16.03.2017
16:54:03
Я и говорю - у меня дебильное решение, потом что перебросов будет оче много

Aragaer
16.03.2017
16:54:58
я предложил решение с минимумом перебросов. Можно сделать вероятность переброса сколь угодно малой, но это потребует большого числа бросков

Spacehug
16.03.2017
16:55:13
Вот я и говорю, дебильное )

Vitaly
16.03.2017
17:30:34
Всем привет! Давно занимаюсь исследованиями на питоне, но периодически сталкиваюсь с написанием продакшн кода. Часто чувствую косяки в построении архитектуры. Посоветуйте книги/учебники хорошие

Aragaer
16.03.2017
17:31:17
книга рефакторинг - там описываются многие разные виды "вонючего кода" и примеры того, как от этой вони избавиться
потому что вариант "написать, а потом почистить плохое" работает эффективнее, чем "спроектировать мегаархитектуру, а потом имплементировать"

Igor
16.03.2017
17:35:56

Subbotin
16.03.2017
17:37:29
А мне нравится
Веселее чем фичи пилить

Mikhail
16.03.2017
17:39:20
def rand3():
result = '{}{}'.format(rand2(), rand2())
while result == '11':
result = '{}{}'.format(rand2(), rand2())
return result

Aragaer
16.03.2017
17:44:58
это аналогично моей арифметике с вычитанием единицы и умножением на 2
перебрасывание с вероятностью 25%

Ivan
16.03.2017
17:45:59
Tornado
`
def add_task(self, account):
response = yield http_client.fetch(request, callback=(yield gen.Callback(self.new_data['id'])))
self.finish(response)
@gen.coroutine
def post(self, account):
..............
self.add_task(account)
answer = yield gen.Wait(self.new_data['id'])
`
выдает ошибку UnknownKeyError: key 8541210947015471499 is not pending
не могу понять почему? получается, что метод add_task не выполняется. Что делаю не так?

Artyom
16.03.2017
17:47:07
Ой
Миссклик

Eldar
16.03.2017
17:48:46
я канешн не эксперт, но с лицом что-то не то