2014-01-27 156 views
1

假设我拥有的是一个例程,它以相同的概率随机生成0和1,我如何使用它来找到1和n之间的随机数。我不能使用任何其他随机数功能。我需要用我的例程来达到目标​​。请指点一下他会有帮助。生成范围内的随机数

+0

调用你的函数n次,只是总和 –

+0

@ MujahidDaudKhan除了不会给出一个统一的分布,我期待提问者想要的。 –

+0

我们在这里谈论什么语言? –

回答

0
  1. 设M =小区(日志(N));也就是说,m是表示n所需的比特数。
  2. 生成长度为m的随机比特串,并将其解释为非负整数k。
  3. 若k> = n,将回到步骤2。否则你的随机数为k + 1

这是拒绝抽样的形式,会给你随机整数k均匀分布+ 1在[1,n]的范围内。

0

简单地使用fomular 兰特()*(N-1)+1

+0

对不起,但由于random()是0或1,结果将是1或n,没有任何中间值 –

相关问题