diff --git a/src/docs/stan-reference/distributions.tex b/src/docs/stan-reference/distributions.tex index f25dc71f773..f144db5b120 100644 --- a/src/docs/stan-reference/distributions.tex +++ b/src/docs/stan-reference/distributions.tex @@ -642,8 +642,12 @@ \subsubsection{Stan Functions} categorical variate with $N$-simplex distribution parameter \farg{theta}; may only be used in generated quantities block} \end{description} - - +% +\begin{description} +\fitem{int}{categorical\_logit\_rng}{vector \farg{beta}}{Generate a + categorical variate with outcome in range $1:N$ from log-odds vector +\farg{beta}; may only be used in generated quantities block} +\end{description} \section{Ordered Logistic Distribution} diff --git a/src/docs/stan-reference/examples.tex b/src/docs/stan-reference/examples.tex index c74471269cd..147c4cbce84 100644 --- a/src/docs/stan-reference/examples.tex +++ b/src/docs/stan-reference/examples.tex @@ -5145,7 +5145,7 @@ \subsection{Discrete Sampling} \begin{stancode} generated quantities { int s; - s = categorical_rng(softmax(lp)); + s = categorical_logit_rng(lp); } \end{stancode} % diff --git a/src/stan/lang/function_signatures.h b/src/stan/lang/function_signatures.h index b0a0c98cba7..67cc89befdb 100644 --- a/src/stan/lang/function_signatures.h +++ b/src/stan/lang/function_signatures.h @@ -161,6 +161,7 @@ for (size_t i = 0; i < int_vector_types.size(); ++i) { VECTOR_T); } add("categorical_rng", INT_T, VECTOR_T); +add("categorical_logit_rng", INT_T, VECTOR_T); for (size_t i = 0; i < vector_types.size(); ++i) { for (size_t j = 0; j < vector_types.size(); ++j) { for (size_t k = 0; k < vector_types.size(); ++k) { diff --git a/src/test/test-models/good/function-signatures/distributions/rngs.stan b/src/test/test-models/good/function-signatures/distributions/rngs.stan index 46347b5f071..cd7bd7cf2a9 100644 --- a/src/test/test-models/good/function-signatures/distributions/rngs.stan +++ b/src/test/test-models/good/function-signatures/distributions/rngs.stan @@ -29,6 +29,7 @@ generated quantities { n <- poisson_log_rng(2.7); n <- categorical_rng(theta); + n <- categorical_logit_rng(theta); ns <- multinomial_rng(theta,20); z <- normal_rng(0,1);