
Tigran
19.07.2017
13:32:23

Aleksandr
19.07.2017
13:33:03

Tigran
19.07.2017
13:33:20

Aragaer
19.07.2017
13:48:51
я nose использую

Google

Aragaer
19.07.2017
13:49:19
unittest + nose
одно время использовал еще и behave к этому делу, но оно скорее ортогонально

Aleksandr
19.07.2017
13:49:39

Aragaer
19.07.2017
13:51:24
просто nosetests
на днях увидел, что существует nose2, но не стал пока смотреть на него

Artem
19.07.2017
13:52:27
я использовал nose

Aleksandr
19.07.2017
13:52:29

Aragaer
19.07.2017
13:53:50
ну просто вот я тут сел писать код, открыл текстовый файл и написал import unittest
А когда надо было это запустить, то pip install nose и после этого nosetests
что-то там думать, выбирать и сравнивать было не очень охота

Aleksandr
19.07.2017
13:54:36

Artem
19.07.2017
13:56:04
не добрался до чего-то супер специфичного, чтобы мочь сейчас описать ощущения. обычные ощущения)

Google

Artem
19.07.2017
13:56:21
подводных камней не обнаружил

Rail'
19.07.2017
14:28:34
Парни, такая задачка, есть например список из трех чисел(может больше)
[93.3486486486486, 6.40810810810811, 0.245945945945946]
если их сумма больше или равно 98, то как округлить все числа списка так, чтобы их сумма получилась равной 100, например здесь должно получиться [94, 6, 0]

Ignalion
19.07.2017
14:29:39
иууу

Rail'
19.07.2017
14:30:48

Ignalion
19.07.2017
14:31:02

tonko
19.07.2017
14:31:07
одновременно

Ignalion
19.07.2017
14:31:30
Ну и, мало информации. Чисел может быть больше? А сумма всегда 98?

b0g3r
19.07.2017
14:31:49
а нельзя округлить 93 , 7 , 0?

Artem
19.07.2017
14:31:51
округлить по каким правилам?

Ignalion
19.07.2017
14:31:52
Ну и плюс, округлить 93.3 до 94 - это тоже странно

tonko
19.07.2017
14:31:52
интересно где такое пригодилось

b0g3r
19.07.2017
14:32:10
или вообще какое правило округления? чтоб 100 получилось, остальное неважно?

Roman
19.07.2017
14:32:16
>>> from operator import add
>>> reduce(add, [93.3486486486486, 6.40810810810811, 0.245945945945946])
100.00270270270266

Artem
19.07.2017
14:32:21
так-то просто домножаешь на 100/98, все тримишь и к рандомному элементу добавляешь 1

b0g3r
19.07.2017
14:32:37

Roman
19.07.2017
14:32:46
сорре

Ignalion
19.07.2017
14:32:46
Щас бы сворачивать сложение
Парни, такая задачка, есть например список из трех чисел(может больше)
[93.3486486486486, 6.40810810810811, 0.245945945945946]
если их сумма больше или равно 98, то как округлить все числа списка так, чтобы их сумма получилась равной 100, например здесь должно получиться [94, 6, 0]
В общем, мало данных

Roman
19.07.2017
14:33:42
это к что простое округление и так работает

Google

Ignalion
19.07.2017
14:34:04
А. Я понял

b0g3r
19.07.2017
14:34:20

Rail'
19.07.2017
14:34:20

b0g3r
19.07.2017
14:35:00
а нельзя округлить 93 , 7 , 0?

Nikolay
19.07.2017
14:35:17

tonko
19.07.2017
14:35:22
а нельзя округлить 100, 0, 0?

Ignalion
19.07.2017
14:35:22
Просто округление не ассоциативно
То есть,
round(a) + round(b) != round(a + b)

Rail'
19.07.2017
14:35:40

tonko
19.07.2017
14:35:50
раз уж мы так странно округляем

Artem
19.07.2017
14:36:01

Roman
19.07.2017
14:36:02

b0g3r
19.07.2017
14:36:04
это к тебе вопрос - по какому правилу мы решаем, какое число вверх округляем, а какое вниз

Ignalion
19.07.2017
14:36:09
Парни, такая задачка, есть например список из трех чисел(может больше)
[93.3486486486486, 6.40810810810811, 0.245945945945946]
если их сумма больше или равно 98, то как округлить все числа списка так, чтобы их сумма получилась равной 100, например здесь должно получиться [94, 6, 0]
А ты хочешь именно сделать чтобы если round(a+b) было 100, то и round(a) + round(b) было 100?
Хм. наверное, дистрибутивность, а не ассоциативность. Ну пофиг

b0g3r
19.07.2017
14:38:24
если что - вот решение тут было уже
так-то просто домножаешь на 100/98, все тримишь и к рандомному элементу добавляешь 1

Rail'
19.07.2017
14:40:55
А ты хочешь именно сделать чтобы если round(a+b) было 100, то и round(a) + round(b) было 100?
я хочу чтобы было так func(x1->float, x2->float, x3->float) -> List[y1->int, y2->int, y3->int], где если 98 <= sum(x1, x2, x3) <=102, то sum(y1, y2, y3) = 100

Tigran
19.07.2017
14:46:28
только надо домножить на 100 / (x1 + x2 + x3)

Google

Artem
19.07.2017
14:46:54

Tigran
19.07.2017
14:47:01
так там у него необязательно 98
а от 98 до 102

Artem
19.07.2017
14:47:14
на тот момент было 98!
короч ну да, смысл такой

Tigran
19.07.2017
14:47:26
нет, он сразу писал >= 98

Admin
ERROR: S client not available

Tigran
19.07.2017
14:47:44
ещё есть проблема, что в трёх дробных частях суммарно не обязательно 1, может быть ещё 2

Artem
19.07.2017
14:47:44
а, это я в глаза ебусь, сорян

Tigran
19.07.2017
14:48:44
задача и правда требует додумывания в части постановки

Nikolay
19.07.2017
14:49:32
while not sum(a) == 100:
a = [i + random.uniform(-1, 1) for i in a]

Ignalion
19.07.2017
14:49:37
Ну в общем
https://stackoverflow.com/questions/792460/how-to-round-floats-to-integers-while-preserving-their-sum

Tigran
19.07.2017
14:55:19

Nikolay
19.07.2017
14:55:36
не, понятно, что код чисто на поржать :)

Tigran
19.07.2017
14:56:05
ну ты просто долго прибавляешь к ней случайную величину, равномерно распределённую на [-1, 1]

Nikolay
19.07.2017
14:56:06
но он вполне может сходиться

Tigran
19.07.2017
14:56:46
есть теорема, что ряд из каких-то там (независимых и что-то ещё) случайных величин сходится либо с вероятностью 0, либо с вероятностью 1

Google

Nikolay
19.07.2017
14:57:02

Tigran
19.07.2017
14:57:07
ну как не ряд
ты ж прибавляешь бесконечно)

Nikolay
19.07.2017
14:57:15
три дискретные случайные величины

Tigran
19.07.2017
14:57:23
дискретные?

Denis
19.07.2017
14:57:33
Расходится != сходится к бесконечности

Tigran
19.07.2017
14:57:37
у него float'ы, и random.uniform тоже float'ы
упс

Denis
19.07.2017
14:57:53
Расходится != неограничен даже

Nikolay
19.07.2017
14:57:54
а что, у float'ов бесконечная точность?

Tigran
19.07.2017
14:58:17
Хммм, ну если спуститься на землю к флотам, то фиг знает, конечно

Nikolay
19.07.2017
14:58:25
ну и вот

Tigran
19.07.2017
15:00:07
запустил
:)
числа растут

Nikolay
19.07.2017
15:00:17
и что, отработал?)
ну, генератор случайных чисел не идеален