# Drawing event times from a truncated exponential distribution

**URL:** <https://mworks.discourse.group/t/drawing-event-times-from-a-truncated-exponential-distribution/906>\
**Category:** Support\
**Created:** [August 10, 2023, 7:32pm UTC](https://mworks.discourse.group/t/drawing-event-times-from-a-truncated-exponential-distribution/906 "2023-08-10T19:32:43Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yasmine\_El-Shamayleh](https://avatars.discourse-cdn.com/v4/letter/y/258eb7/32.png) [@Yasmine\_El-Shamayleh](https://mworks.discourse.group/u/Yasmine_El-Shamayleh)\
**Post date:** [August 10, 2023, 7:32pm UTC](https://mworks.discourse.group/t/drawing-event-times-from-a-truncated-exponential-distribution/906/1 "2023-08-10T19:32:43Z")

</div>

Hi Chris -

Im CCing our new team member Yuan (Taylor) Xie who is taking over from Neel (who started a PhD program at NYU). Taylor spent time as an NYU undergrad in Tony Movshon’s lab - so she has managed to pick up our MWorks needs pretty fast!

Im writing because we would like to implement a function/plug-in in MWorks for drawing values for particular trial events (e.g a time requirement for fixating a stimulus) from a distribution with specific properties (truncated exponential).

We have code from colleagues in Mike Shadlen’s lab here that implements this in C or Matlab (attached).

For example, in the Matlab version, we feed in a mean\_time, min\_time and max\_time:

tOut = exponential\_timer(mean\_time, min\_time, max\_time)

Is it possible to implement something like this for us fairly soon? Any other suggestions for how we might implement it ourselves easily?

Many thanks,  
Yasmine

[exponential\_timer.c](https://mworks.discourse.group/uploads/short-url/vh5BBgRShkRd1rHN4pYwJKiD5ZS.c) (1.49 KB)

[exponential\_timer.m](https://mworks.discourse.group/uploads/short-url/zUuypW6VHVYqAl4c61P7FtwLV55.m) (758 Bytes)

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 10, 2023, 8:38pm UTC](https://mworks.discourse.group/t/drawing-event-times-from-a-truncated-exponential-distribution/906/2 "2023-08-10T20:38:10Z")

</div>

Invited @Yuan\_Xie on August 10, 2023, 8:38pm UTC



---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 10, 2023, 8:38pm UTC](https://mworks.discourse.group/t/drawing-event-times-from-a-truncated-exponential-distribution/906/3 "2023-08-10T20:38:10Z")

</div>

Forwarded the above email



---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 10, 2023, 8:43pm UTC](https://mworks.discourse.group/t/drawing-event-times-from-a-truncated-exponential-distribution/906/4 "2023-08-10T20:43:18Z")

</div>

Made this topic public on August 10, 2023, 8:43pm UTC



---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 10, 2023, 8:54pm UTC](https://mworks.discourse.group/t/drawing-event-times-from-a-truncated-exponential-distribution/906/5 "2023-08-10T20:54:27Z")

</div>

Hi Yasmine & Taylor,

MWorks already has a truncated exponential distribution function. See [Random Number Generators](https://mworks.github.io/documentation/latest/expressions/index.html#random-number-generators) in the user manual. The function’s [implementation](https://github.com/mworks/mworks/blob/d9f3eb389f2ac25dea779c1510ec716852a70ccf/core/Core/XMLParser/ExpressionParser/ExpressionParser.cc#L2939) looks just like the code you shared. If you want some other type of distribution, the quickest way to get it would be to implement it in [Python](https://mworks.github.io/documentation/latest/components/run_python_file.html).

FYI: I’m going to be on vacation for the next two weeks, so I may not be able to answer follow-up questions until I return.

Cheers,  
Chris

---

<div class="post-metadata">

**Author:** ![Yasmine\_El-Shamayleh](https://avatars.discourse-cdn.com/v4/letter/y/258eb7/32.png) [@Yasmine\_El-Shamayleh](https://mworks.discourse.group/u/Yasmine_El-Shamayleh)\
**Post date:** [August 10, 2023, 10:06pm UTC](https://mworks.discourse.group/t/drawing-event-times-from-a-truncated-exponential-distribution/906/6 "2023-08-10T22:06:47Z")

</div>

Hi Chris -

Perfect! We’ll try this function and see how it works for us. This looks very similar to ours indeed.

`exp_rand(beta,min,max)`

Random number from exponential distribution with mean _beta+min_, optionally truncated at _max_. _min_ and _max_ are both optional and default to zero and positive infinity, respectively.

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 30, 2023, 4:23pm UTC](https://mworks.discourse.group/t/drawing-event-times-from-a-truncated-exponential-distribution/906/7 "2023-08-30T16:23:29Z")

</div>

Closed on August 30, 2023, 4:23pm UTC


