в [low;hi]. Почему часто он реализован как rejection sampling? требование по совместимости со всеми генераторами начиная с С++17?
Взятие остатка от деления в общем случае делает выборку не равномерной.
Из вашего ответа не понятно, это требование стандарта или они по приколу это сделали, потому что так красивее, но завтра могут и переделать, потому что будет противоречить требованию
мб открыть стандарт тогда?
я в нем не нашел, откройте
Чтобы вероятность получения всех чисел из отрезка была одинаковой. Другого общего способа замапить генератор из k бит в произвольный отрезок равномерно я не знаю.
https://eel.is/c++draft/rand.dist.uni.int#1
http://eel.is/c++draft/rand.dist#general-3
а это и не требование, это реализация
Это требование к uniform_int_distribution: должен выдавать равномерное распределение из генератора, который умеет выдавать биты. Нет требования реализовывать именно через rejection sampling, но другого такого сэмплирования я не знаю. Сразу после меня сказали, что явно написано, что конкретная реализация — implementation-defined.
пока что мы поняли, что вы не знаете, и реализовано сейчас так, но что оно будет так завтра реализовано - требований мы не нашли
Обсуждают сегодня