
Alexander
08.06.2017
13:45:24
не умею
import std.random
randomchik <int> (1, 11);

Stanislav
08.06.2017
13:46:03

Alexander
08.06.2017
13:46:29

Google

Antony
08.06.2017
13:47:03
Что с повторимостью последовательности? Что с предсказуемостью последовательности?
Что с производительностью?

Alexander
08.06.2017
13:48:06
псевдо-рандом, мерсенн твистер
https://docs.python.org/2/library/random.html
емнип, питоновский рандом работает так: генерирует флоат от нуля до одного, а из него уже всякие штуки получает. И инты, и рендж, и всяко разное

Stanislav
08.06.2017
13:50:33

Alexander
08.06.2017
13:50:42
нажми-ка пару раз по rand() F12, и увидишь, что там за стыд написан ?

Antony
08.06.2017
13:51:39
Мерсен твистер - тяжёлый, его сложно инициализировать с помощью обычного seed;
Будет один стейт на все потоки, или в каждом потоке свой стейт? Какое изначальное значение?

Stanislav
08.06.2017
13:51:41

Alexander
08.06.2017
13:53:25

Simon
08.06.2017
13:54:32
Внезапно, никто не идкт на яндексоивент?

Alexander
08.06.2017
13:55:09
ну в джаве оно обмазано synchronized, что нам не подходит. -> не thread safe

Google

Alexander
08.06.2017
13:55:22
https://stackoverflow.com/questions/5819638/is-random-class-thread-safe
у шарпа не thread safe
ну и rand у нас был не thread safe, емнип
я понимаю, куда ты клонишь - сначала пишем однопоточное приложение, пишем везде super_rand(), всё ок. Потом пытаемся сделать многопоточное, получаем классные грабли

Antony
08.06.2017
13:58:19
Я могу съекономить время: в джаве несколько классов для рандома (читай С++ных RBG), в ней нужно создать RBG чтобы генерировать число. RBG варьируются по секурности и дефолтному значению и проч параметрам...
Тоесть выглядит очень похоже на то, что сейчас в С++

Alexander
08.06.2017
13:58:39
так как мы себе by default не можем позволить synchronized
Так, и как это отменяет наличие в либе обычного удобного биндинга для рандома?

Antony
08.06.2017
14:00:18
отменяет это тем, что в разных проектах абсолютно разные требования и нет возможности сделать rand(min, max) который бы подходил более 66% пользователей

Alexander
08.06.2017
14:00:24
Будет интерфейс простого рандома, без изысков, блекджека и куртизанок. А к нему, в дополнение, есть то действительно хорошее решение, что мы имеем сейчас

Berkus
08.06.2017
14:00:25

Alexander
08.06.2017
14:00:42
ну вот как у питона получилось, а у нас нет

Berkus
08.06.2017
14:00:43
srand(time(0)); это вообще секьюрити дыра

Alexander
08.06.2017
14:01:00

Berkus
08.06.2017
14:01:40
это ты горе-программистам скажи

Antony
08.06.2017
14:01:41

Alexander
08.06.2017
14:02:06

Berkus
08.06.2017
14:06:23

Alexander
08.06.2017
14:06:34

Berkus
08.06.2017
14:06:45
ну сделай свой враппер тогда, 2 строчки

Google

Alexander
08.06.2017
14:07:20

Berkus
08.06.2017
14:08:18
если понимаешь - уже пол дела сделано, а давать топор чувакам которые не понимают и еще и ногу удобно перед ними подкладывать - не оч

Alexander
08.06.2017
14:08:23
кто не хочет - пусть не юзает, мне то какое дело до них. Пусть пишут свои варианты, thread safe, более быстре и так далее. Я уважаю их выбор и понимаю, что часто так и нужно делать. Но это не повод не написать простой как rand() враппер, который работает

Berkus
08.06.2017
14:09:04
доку никто не будет читать

Alexander
08.06.2017
14:09:05
с такими речами мы сейчас дойдём до Safe STL

Antony
08.06.2017
14:09:13
Давай я пару примеров приведу, где нужны абсолютно разные подходы:
* бенчмарки - нужна повторимость результатов, при том между платформами и ОС
* сервера игровой механики - нужна производительность, средняя стойкость и можно немного потратить время на старте. Повторимось либо нужна, либо противопоказана
* эмбедед - нужны низкие затраты по памяти и производительности, части апаратных решений нет
* финансы - повторимость противопоказана, крайне высокая стойкость, пользоваться просто генератором без подбрасывания энтропии нельзя
* интерфейсные штуки - srand(time(0)) и ОК :)
+ нужно помножить это всё на многопоточно/однопоточно
Я не знаю ни одного решения, которое бы удовлетворяло большинству пунктов


Alexander
08.06.2017
14:09:22
Давай я пару примеров приведу, где нужны абсолютно разные подходы:
* бенчмарки - нужна повторимость результатов, при том между платформами и ОС
* сервера игровой механики - нужна производительность, средняя стойкость и можно немного потратить время на старте. Повторимось либо нужна, либо противопоказана
* эмбедед - нужны низкие затраты по памяти и производительности, части апаратных решений нет
* финансы - повторимость противопоказана, крайне высокая стойкость, пользоваться просто генератором без подбрасывания энтропии нельзя
* интерфейсные штуки - srand(time(0)) и ОК :)
+ нужно помножить это всё на многопоточно/однопоточно
Я не знаю ни одного решения, которое бы удовлетворяло большинству пунктов
ты забыл кое-какой пункт. Обычное говнопрограммирование. Самое обычное. Лабы в универе, наколенные наброски, прототипы, десктопное говно, которого у меня на работе пруд пруди
там вообще на всё плевать. srand(time(0))? пойдёт. но где к нему rand(min, max) ?


Antony
08.06.2017
14:12:03

Alexander
08.06.2017
14:12:19
про твои кейсы - согласен абсолютно. Именно для них и не только для них нужен весь тот набор средств, что С++ даёт уже

Alexander
08.06.2017
14:12:26

Fedor
08.06.2017
14:12:38

Alexander
08.06.2017
14:12:40
просто хотят рандом в диапазоне
ага и пишут min + rand() % max
я по секрету скажу, что много чего можно руками сделать: и split написать за 10 строк кода, и проверку, чем заканчивается строка сделать через .substr вместо .ends_with() . Но зачем так делать?

Fedor
08.06.2017
14:14:24
а зачем?
Ну, в предыдущем проекте эта функция давала неравномерный рандом например. Был написан комментарий, но ее не трогали.

Alexander
08.06.2017
14:14:28
https://www.youtube.com/watch?v=vB27LVWK-KU

Дед Пегас
08.06.2017
14:14:36
Ну вот split было бы круто иметь.

Google

Дед Пегас
08.06.2017
14:15:06
«Подключите boost за 5 минуток» так себе решение, если честно.

Alexander
08.06.2017
14:15:10

Дед Пегас
08.06.2017
14:15:47
Компиляется он быстро щас.

Alexander
08.06.2017
14:16:02
не LibreOffice, поди ?

Дед Пегас
08.06.2017
14:16:24
10 минут это ок.
Для такой громадины.
ИМХО.
Рабочий проект за час собирается

Admin
ERROR: S client not available

Fedor
08.06.2017
14:16:54
Еще contains для std::map очень хочется.

Alexander
08.06.2017
14:16:55

Дед Пегас
08.06.2017
14:17:08

Alexander
08.06.2017
14:17:19

Дед Пегас
08.06.2017
14:17:34

Alexander
08.06.2017
14:17:52

Berkus
08.06.2017
14:17:54

Fedor
08.06.2017
14:18:21
Ну, блин, функцию я и сам напишу

Google

Дед Пегас
08.06.2017
14:18:28
Чо вам, сложно что ле.
И из проекта в проект пишутся/тащатся свои велосипеды для мелких таких задач.
Да, я понимаю, что нужно писать пропозал.
А не бухтеть.)

Anatoly
08.06.2017
14:20:17

Alexander
08.06.2017
14:20:54
я спрашиваю - где мой стандартный биндинг. Почему питон имеет, а я нет?

Anatoly
08.06.2017
14:21:17
ну, тогда чем конкретно ты недоволен?
пропазалы есть, они обсуждаются

Alexander
08.06.2017
14:21:30

Дед Пегас
08.06.2017
14:21:34
/offtop просто в погоне за универсальностью можно упустить элементарное удобство offtop/

Anatoly
08.06.2017
14:21:42
да, бюрократия, дело такое

Alexander
08.06.2017
14:21:48

Berkus
08.06.2017
14:22:27
rand(min, max) не появится из воздуха

Alexander
08.06.2017
14:23:19
и что-то мне подсказывает, что ткаой уже есть. Надо поискать

Fedor
08.06.2017
14:24:06
Есть эти пропозалы, насколько я знаю. Но они не считаютcя приоритетными.
http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0458r0.html

Дед Пегас
08.06.2017
14:24:21

/dev
08.06.2017
14:24:31

Fedor
08.06.2017
14:24:44
Якобы это добавление избыточности в интерфейс