# [R] Generate random Bernoulli draws

Berry, Charles ccberry @end|ng |rom uc@d@edu
Sat Jul 7 01:27:04 CEST 2018

```
> On Jul 6, 2018, at 3:31 PM, Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
>
> On 06/07/2018 1:18 PM, Berry, Charles wrote:
>> A liitle math goes along way. See below.
>>> On Jul 5, 2018, at 10:35 PM, Marino David <davidmarino838 using gmail.com> wrote:
>>>
>>> Dear Bert,
>>>
>>> I know it is a simple question. But for me, at current, I fail to implement
>>> it. So, I ask for help here.
>>>
>>> It is not homework.
>>>
>>> Best,
>>>
>>> David
>>>
>>> 2018-07-06 13:32 GMT+08:00 Bert Gunter <bgunter.4567 using gmail.com>:
>>>
>>>> Is this homework?
>>>>
>>>> (There is an informal no-homework policy on this list).
>>>>
>>>> Cheers,
>>>> Bert
>>>>
>>>>
>>>>
>>>> Bert Gunter
>>>>
>>>> "The trouble with having an open mind is that people keep coming along and
>>>> sticking things into it."
>>>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>>>>
>>>> On Thu, Jul 5, 2018 at 10:23 PM, Marino David <davidmarino838 using gmail.com>
>>>> wrote:
>>>>
>>>>> Dear All,
>>>>>
>>>>> I would like to generate N random Bernoulli draws given a probability
>>>>> function F(x)=1-exp(-2.5*x) in which x follows  uniform distribution, say
>>>>> x~U(0,2).
>> If each Bernoulli draw is based on its own draw of x, then
>> 	rbinom( N, 1, 0.8013476 )
>> is what you want.
>> It is left as an exercise for the reader to verify that the constant 0.8013476 is correct up to approximation error, and to prove that such a Bernoulli mixture is also Bernoulli. Perhaps,
>> 	?integrate
>> will help.
>> But if the x's are shared you need to use runif, expm1, and (possibly) rep to produce a vector to be used in place of the prob argument.
>
> That may be correct from a mathematical perspective (I haven't checked), but seems like a *really* bad idea from a programming perspective.  It would be much better to write

Well of course it would.  I was hoping that my somewhat obscure one-liner would suggest

>
> x <- runif(N, 0, 2)
> rbinom(N, 1, 1 - exp(-2.5*x))
>
> because it is so much more clearly related to the original problem statement.  Perhaps it would be a few microseconds slower, but that would be saved many times over when any aspect of the problem statement was modified.
>
> Duncan Murdoch
>
>> HTH,
>> Chuck
>>>>>
>>>>> Can some one leave me some code lines for implementing this?
>>>>>
>>>>>
>>>>> David
>>>>>
>>>>>        [[alternative HTML version deleted]]
>>>>>
>>>>> ______________________________________________
>>>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>> ng-guide.html
>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>>>>
>>>>
>>>
>>> 	[[alternative HTML version deleted]]
>>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help