`
kevin_in_java
  • 浏览: 30262 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Random(0,1)生成Random(a,b)

阅读更多

算法导论5.1-1

参考博客

http://blog.csdn.net/effenberg11/article/details/5976838

 

http://qianggezhishen.bokee.com/viewdiary.43964492.html

博客中算法

 1、把要生成的数标记为 a, a+1, a+2,..., b-a+1,…,b-1,b
2、取最小的 m,使得 2^m >= n
3、通过随机生成 0,1 的函数生成一个  m 比特整数(随机生成每一位),这样能随机生成 [a, 2^m) 内的整数。
4、随机生成一个 [a,2^m) 中的整数,如果这个数大小在 [a, b] 内,则取这个数为结果。如果这个数在 [a, b] 外,则丢弃它,重新生成一个。

 

 

 看着有点绕。重写一下。。

 

1、通过Random(0,1)生成Random(a,b),实际上我们生成random(0,b-a)+a 就可以了,然后问题就转换为了Random(0,1)生成Random(0,n), 这里n=b-a

2、由于n可能不是2的整数幂,要找到最小的m使 2^m >n

 int getM(int n)

{

      m =0;

      while(n>=2)

      {

           n=n/2;

          m++;

       }

     if(pow(2,m)<n)

     m++;

return m;  

}

 

然后生成随机数0~2^m,可以分治法递归也可以二进制按位计算(推荐),如果随机数result落在0~n之间,则随机数生成成功,如果随机数落在n+1~2^m,则重新生成随机数。一次成功生成随即书的概率为n/2^m。令p=n/2^m所以时间复杂度o=p+p(1-p)*2+p(1-p)^2*3+....+np(1-p)^(n-1)=1/(1-p)    (等比数列相关问题,高中数学加一点极限问题,不解释)

 

上述可能计算有误,思想应该是没问题的~~

 

 

 

 

 

分享到:
评论

相关推荐

    Python random 生成随机数

    `random.uniform(a, b)`函数返回一个在[a, b]或[b, a]区间内的随机浮点数。具体来说,如果a &lt; b,则结果范围为[a, b];如果a &gt; b,则范围为[b, a]。这意味着无论a和b的大小顺序如何,函数都将返回两个参数之间的随机...

    Python中random模块生成随机数详解

    Python中的random模块...random.random()用于生成一个0到1的随机符点数: 0 &lt;= n &lt; 1&gt; b,则生成的随机数n: a &lt;= n &lt;= b。如果 a &lt;b, 则 b &lt;= n &lt;= a。 print random.uniform(10, 20) print rando

    Python之random库生成随机数

    `numpy.random.randn(a, b)`函数生成一个a行b列的二维数组,数组中的每个元素都服从标准正态分布(均值为0,标准差为1)。例如: ```python data = np.random.randn(5, 4) ``` 这将创建一个5行4列的标准正态分布的...

    [Python入门教程]Python生成随机数模块(random)使用方法.pdf

    使用randint(a, b)方法可以生成指定范围内的随机整数,包括b。例如,使用random.randint(0, 100)可以生成一个在0到100之间的随机整数。 2. 生成随机数 使用randrange(start, stop=None, step=1)方法可以生成一个...

    python的random模块及加权随机算法的python实现方法

    random是用于生成随机数的,我们可以...= n &lt; 1 u7528于生成一个指定范围内的随机浮点数,生成的随机整数a于生成一个指定范围内的整数,a为下限,b为上限,生成的随机整数a&lt;=n b;若a=b,则n&gt;b,报错 •random.randran

    随机数产生器random number

    1. `random.randint(a, b)`:生成a和b之间(包括a和b)的一个随机整数。 2. `random.random()`:返回0到1之间(不包括1)的随机浮点数。 3. `random.uniform(a, b)`:返回a和b之间(包括a和b)的随机浮点数。 4. `...

    详解Python基础random模块随机数的生成

    该方法用于生成0到1之间(不包括1)的随机浮点数。这个方法是许多其他随机数生成方法的基础。 **示例代码:** ```python import random print("random:", random.random()) ``` **输出结果:** ``` random: 0....

    an-arbitrary-random-integer.rar_arbitrary和random_random

    1. `random.randint(a, b)`:这个函数会返回a和b之间(包括a和b)的一个随机整数。a和b可以是任意整数,它们定义了随机数的范围。 2. `random.random()`:这个函数返回一个0到1之间的浮点数,其中0包括在内,但1不...

    Python内置random模块生成随机数的方法

    - **功能**: 生成0到1之间的随机浮点数(左闭右开区间),即结果包括0但不包括1。 - **示例代码**: ```python import random print("random:", random.random()) # 输出可能为: random: 0.5714025946899135 `...

    python_random.zip_python_python+random

    `random.random()`函数则是生成一个0到1之间的浮点数,其中0包括在内,但1不包括。这个浮点数是基于当前系统时钟的随机性生成的,因此每次调用都可能不同。 对于需要在某个区间内生成浮点数的情况,`random.uniform...

    A Random Number Generator in Verilog in Verilog

    一个典型的例子是线性同余生成器(Linear Congruential Generator),它通过以下公式迭代产生随机数序列:x(n+1) = (a * x(n) + b) mod m,其中参数a、b和m必须精心挑选以获得最长的序列。 在安全性和加密的应用中...

    python random库

    1. **导入模块**:首先导入 `random` 和 `time` 模块,其中 `random` 用于生成随机数,`time` 用于计算程序运行时间。 2. **定义常量**:`DARTS` 定义为抛撒点的数量,这里设为 1,000,000。 3. **初始化计数器**:...

    guess random number

    例如,`random.randint(a, b)`函数可以生成a和b之间(包括a和b)的一个随机整数。如果需要生成浮点数,可以使用`random.uniform(a, b)`,它会返回a和b之间的一个随机浮点数。 2. **交互式编程**:这个项目涉及到与...

    C#随机函数random()典型用法集锦

    - **单参形式**:`Random.Next(maxValue)`返回0到maxValue-1之间的随机整数。 - **双参形式**:`Random.Next(minValue, maxValue)`返回minValue到maxValue-1之间的随机整数。 示例代码: ```csharp Random random =...

    第12.4节 Python伪随机数数生成器random模块导览.rar

    4. `random.uniform(a, b)`:返回a和b之间(包含a和b)的浮点数,比`random.random()`更灵活,因为它可以指定区间的上下限。 5. `random.choice(seq)`:从序列`seq`中随机选取并返回一个元素。这在需要从列表、元组...

    C#学习笔记- 随机函数Random()的用法详解

    除了`Random`类提供的基本方法,C#还提供了`Math`类中的`Random`方法,它返回的是0到1之间(不包括1)的浮点数,具有14位精度。这个浮点数可以用于生成更精确的随机浮点数。例如: ```csharp double randomDouble =...

    random-integer-is-a-prime-number.zip_random_site:www.pudn.com

    这通常通过调用编程语言提供的随机数生成函数实现,例如在Python中可以使用`random.randint(a, b)`来生成[a, b]范围内的随机整数。 2. **素数判断算法**: - **暴力枚举法**:最简单的判断方法是对每个随机整数i,...

    Python3 中 random模块.docx

    这个函数用于生成一个0到1之间的随机浮点数,包括0但不包括1.0。例如: ```python import random a = random.random() print(a) ``` 输出的将是0到1之间的一个随机浮点数。 2. **random.uniform(a, b)** 这...

    Python实现随机生成任意数量车牌号

    char0='\u4eac\u6d25\u6caa\u6e1d\u5180\u8c6b\u4e91\u8fbd\u9ed1\u6e58\u7696\u9c81\u65b0\u82cf\u6d59\u8d63\u9102\u6842\u7518\u664b\u8499\u9655\u5409\u95fd\u8d63\u7ca4\u9752\u85cf\u5ddd\u5b81\u743c' ...

Global site tag (gtag.js) - Google Analytics