#c #statistics
#c #Статистика
Вопрос:
Геометрическое распределение вырождается при задании параметра вероятности 0. C включает такое распределение. Определяет ли это поведение, когда вероятность равна 0?
На моей машине под gcc выводится следующий код 9223372036854775808
(т.е. 1ULL << 63
):
#include <random>
#include <iostream>
int main() {
std::mt19937_64 rng(0);
auto dist = std::geometric_distribution<uint64_t>(0.0);
std::cerr << dist(rng) << "n";
return 0;
}
Ответ №1:
Согласно последнему стандарту C , geometric_distribution
требуется, чтобы p
значение было больше нуля и меньше 1.
explicit geometric_distribution(double p);
2 Предварительных условия: 0 <
p
< 1.3 Примечания:
p
соответствует параметру распределения.
Если вы нарушаете это предварительное условие, передавая 0
for p
, у вас просто неопределенное поведение. Может случиться что угодно, и ваша программа просто недействительна.
Комментарии:
1. О, это немного неприятно, что оно также не определено для p==1. Полезно знать.