跳蚤算法:快速跳蚤算法
来源:互联网 发布:js跳出for循环 编辑:程序博客网 时间:2024/06/10 17:20
跳蚤算法:快速跳蚤算法
在原理当中讲了跳蚤算法的原型,用来获得x个0 to n范围内的不重复随机数。
初始化
For i=0 to n
a(i)=i
Next
乱序
For i=0 to n
r=int(rnd*(n+1))
Swap a(i),a(r)
Next
Sub Swap(V1,V2)
T=V1:V1=V2:V2=T
End Sub
拣出
For i=1 to x
b(i)=a(i-1)
Next
实际应用当中,x一般远远小于n。在乱序过程中,原始的算法是将a(0 to n)所有元素乱序,而我们取的仅仅是前面a(0 to x-1)元素的值。。原始算法的运算时间取决于n。如果n很大,哪怕我们取2个随机数也要循环n次。
假如把乱序代码改为
For i=0 to (x-1)
r=int(rnd*(n+1))
Swap a(i),a(r)
Next
我们可以发现:由于a(0 to x-1)每个元素均与a(r)随机交换,因此可以确保a(0 to x-1)是随机的。这种改进的算法便是“快速跳蚤算法”,当您需要在0 to n范围内获取x个不重复随机数的时候,需要的时间仅与x有关,与n无关。
在通常用途的默认情况下,我一般推荐您使用“快速跳蚤算法”,这是所有变种当中最实用的一个算法。
- 跳蚤算法:快速跳蚤算法
- 跳蚤算法:基本原理。
- 算法连载2:跳蚤问题
- Visual Basic 跳蚤算法模块
- 跳蚤算法完整类模块UltraFlea 2.0
- “跳蚤算法”函数模块(不重复随机数高效算法)
- *&!跳蚤--难
- 关于跳蚤
- POJ_1091 跳蚤
- bzoj4310: 跳蚤
- 4310: 跳蚤
- 跳蚤王国
- 跳蚤的启示!
- 跳蚤和绵羊
- POJ 1091 跳蚤
- poj 1091 跳蚤
- 跳蚤和公牛
- 跳蚤和人
- “跳蚤算法”函数模块(不重复随机数高效算法)
- 马上做完了
- HttpWebRequest读取网页
- 如何实现分页(Java)
- 跳蚤算法:基本原理。
- 跳蚤算法:快速跳蚤算法
- Ladamentis 的BLOG正式启用
- 专用留言贴
- 百度,你懂中文吗?
- ASP.NET连接数据库Access和MS SQL
- 常见资源记录类型及应用示例
- 《网管员必读——网络组建》(第2版)电子课件下载
- 6.26阴
- 今天写了一个简单的helloworld运行时报错