# How to draw a random int from 0 to 100 in rstan?

**URL:** <https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813>\
**Category:** General\
**Tags:** rstan\
**Created:** [June 1, 2021, 7:52pm UTC](https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813 "2021-06-01T19:52:13Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![WTnicole\_WTnicole](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wtnicole_wtnicole/32/11698_2.png) [@WTnicole\_WTnicole](https://discourse.mc-stan.org/u/WTnicole_WTnicole)\
**Post date:** [June 1, 2021, 7:52pm UTC](https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813/1 "2021-06-01T19:52:13Z")

</div>

Is there some function to make sure I can generate one random int from 0 to 100?

---

<div class="post-metadata">

**Author:** ![hhau](https://avatars.discourse-cdn.com/v4/letter/h/2bfe46/32.png) [@hhau](https://discourse.mc-stan.org/u/hhau)\
**Post date:** [June 1, 2021, 7:57pm UTC](https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813/2 "2021-06-01T19:57:59Z")

</div>

You can use `categorical_rng`:

```stan
int z = categorical_rng(rep_vector(1, 100));

```

---

<div class="post-metadata">

**Author:** ![mike-lawrence](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/mike-lawrence/32/59_2.png) [@mike-lawrence](https://discourse.mc-stan.org/u/mike-lawrence)\
**Post date:** [June 1, 2021, 8:04pm UTC](https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813/3 "2021-06-01T20:04:50Z")

</div>

Your query reflects a common misunderstanding of what a Stan program is doing. Stan permits you to express a generative model structure using a variety of probability-related functions, but nothing in a Stan program is allowed to be stochastic by itself. The stochasticity for MCMC comes from the HMC sampler that gets bundled with your Stan program when it is compiled. The sampler will generate random guesses for every parameter then compute the log-probability density implied by these parameters, the data and the model structure manifest by the Stan program you’ve coded. The sampler then uses the final sum log probability density from every set of guesses to inform its parameter guessing strategy in a complicated way that eventually yields a history of guesses that reflect samples from the posterior.

---

<div class="post-metadata">

**Author:** ![mike-lawrence](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/mike-lawrence/32/59_2.png) [@mike-lawrence](https://discourse.mc-stan.org/u/mike-lawrence)\
**Post date:** [June 1, 2021, 8:10pm UTC](https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813/4 "2021-06-01T20:10:42Z")

</div>

Ah, yes, this is how you do it in the case of generated quantities (or transformed data I think).

---

<div class="post-metadata">

**Author:** ![WTnicole\_WTnicole](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wtnicole_wtnicole/32/11698_2.png) [@WTnicole\_WTnicole](https://discourse.mc-stan.org/u/WTnicole_WTnicole)\
**Post date:** [June 1, 2021, 8:11pm UTC](https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813/5 "2021-06-01T20:11:06Z")

</div>

> [@hhau](#):
>
> categorical\_rng

categorical\_rng: Probabilities parameter is not a valid simplex. sum(Probabilities parameter) = 100, but should be 1 (in ‘model97c46e55466\_method3\_update’ at line 98)  
It does not work

---

<div class="post-metadata">

**Author:** ![WTnicole\_WTnicole](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wtnicole_wtnicole/32/11698_2.png) [@WTnicole\_WTnicole](https://discourse.mc-stan.org/u/WTnicole_WTnicole)\
**Post date:** [June 1, 2021, 8:15pm UTC](https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813/6 "2021-06-01T20:15:37Z")

</div>

> [@hhau](#):
>
> `rep_vector`

rep\_vector (1,100) means generate size 100 vector consisting of copies of 0. It is not from 0 to 100

---

<div class="post-metadata">

**Author:** ![hhau](https://avatars.discourse-cdn.com/v4/letter/h/2bfe46/32.png) [@hhau](https://discourse.mc-stan.org/u/hhau)\
**Post date:** [June 1, 2021, 8:17pm UTC](https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813/7 "2021-06-01T20:17:12Z")

</div>

> [@WTnicole\_WTnicole](#):
>
> rep\_vector (1,100) means generate size 100 vector consisting of copies of 0. It is not from 0 to 100

Copies of `1`, not `0`. You can turn this into a 'simplex` by dividing by 100:

```stan
int z = categorical_rng(rep_vector((1.0 / 100), 100));

```

---

<div class="post-metadata">

**Author:** ![WTnicole\_WTnicole](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wtnicole_wtnicole/32/11698_2.png) [@WTnicole\_WTnicole](https://discourse.mc-stan.org/u/WTnicole_WTnicole)\
**Post date:** [June 1, 2021, 8:24pm UTC](https://discourse.mc-stan.org/t/how-to-draw-a-random-int-from-0-to-100-in-rstan/22813/8 "2021-06-01T20:24:57Z")

</div>

> [@hhau](#):
>
> `categorical_rng`

Thank you very much. It does work now.
