随机算法

原创 2007年10月06日 21:59:00

随机数种子需要什么才能让他在100选80得时候不重复呢?? 

其二,怎么能快一点??

 

1 楼laisiwei(.:RNPA:.刺猬)回复于 2002-06-27 08:44:17 得分 10

和前面的一一比较,如果有重复,再重新取一个随机数Top

2 楼griefforyou(为你伤心(http://book.4yt.net 四月天言情小说书库))回复于 2002-06-27 08:52:56 得分 0

upTop

3 楼nik_Amis(...)回复于 2002-06-27 08:59:32 得分 20

Option   Explicit  
   
   
  Dim   aNum(99)   As   Integer  
   
  Private   Sub   Form_Load()  
          Randomize   Timer  
          Gen  
          Dim   n   As   Integer  
          For   n   =   0   To   79  
                  Debug.Print   aNum(n)  
          Next  
  End   Sub  
   
  Private   Sub   Gen()  
          Dim   nIndex   As   Integer  
          Dim   a,   b,   s   As   Integer  
           
          For   nIndex   =   0   To   99  
                  aNum(nIndex)   =   nIndex   +   1  
          Next  
          For   nIndex   =   0   To   50  
                  a   =   Int(Rnd   *   100)  
                  b   =   Int(Rnd   *   100)  
                  s   =   aNum(a)  
                  aNum(a)   =   aNum(b)  
                  aNum(b)   =   s  
          Next  
  End   Sub  
   
   
   
  谁有更好的办法?  
  Top

4 楼LIKEVB(*^-^*,能笑两笑就好了)回复于 2002-06-27 09:00:11 得分 0

to     laisiwei(刺猬)    
  经常死掉了  
  就是经常重复造成的Top

5 楼robin_xin_xin(鳄鱼宝宝)回复于 2002-06-27 09:17:55 得分 10

有一个“幸运的基督徒”的算法,不知你听过没有?  
  大意就是N个人排成一圈,数数,数到某个数的人就跳出圈子,下面的人在从一开始数。  
  为了增加随即性,可以把跳出的人从新再排成一队,重复这个过程  
  我就是用这个方法制造随即序列的Top

6 楼TechnoFantasy((VB MVP)www.applevb.com回复于 2002-06-27 09:20:19 得分 10

建一个a(20)的数组,里面的值从80-100,然后取一个0-20之间的随机数,假设是15,那么将a(15)取出来,然后将a(16)到a(20)的数全部前移一位,就是a(16)->a(15),   a(17)->a(16)...,然后取0-19之间的随机数,再按照上面的方式取数以及移数。Top

7 楼LIKEVB(*^-^*,能笑两笑就好了)回复于 2002-06-27 09:22:23 得分 0

to     robin_xin_xin(鳄鱼宝宝)    
  我不是个幸运的基督徒   ~~~~  
  请赐教,有源码???  
  但是如果基数很大呢??上万个基督徒呢??Top

8 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2002-06-27 09:26:15 得分 0

我的方法同   robin_xin_xin(鳄鱼宝宝)     差不多Top

9 楼TechnoFantasy((VB MVP)www.applevb.com回复于 2002-06-27 09:31:27 得分 0

如果很多的话可以再分组,例如10000个可以做一个a(100,100)的数组,另外做一个b(99)的数组记录每一个分组已经取过的次数,初始值为100,每一组取一次以后数组b中相应的值减1。Top

10 楼Naola2001(摆地摊.Net)回复于 2002-06-27 09:35:28 得分 10

为人要取数?你可把100个数进行随机排序,把顺序打乱,然后随机去掉20个不就得了!  
   
  呵呵,我的想法总是与众不同。Top

11 楼nik_Amis(...)回复于 2002-06-27 10:09:14 得分 0

LIKEVB(*^-^*,能笑两笑就好了)    
  我的办法如何??Top

12 楼LIKEVB(*^-^*,能笑两笑就好了)回复于 2002-06-27 10:18:51 得分 0

谢谢   nik_Amis(Azrael)    
  我用这个方法解决的  
  For   i   =   txt1   To   txt2  
  100:  
          a(i)   =   Int(L_hs   *   Rnd)   +   1  
          For   j   =   0   To   i   -   1  
                  If   a(i)   =   a(j)   And   i   <>   j   Then  
                  DoEvents  
                  GoTo   100  
                  End   If  
          Next   j  
          Close   #1  
          Open   App.Path   +   "/cj.txt"   For   Input   As   #1  
          Seek   1,   a(i)                                       '把指针移到文件1的第1行  
          Line   Input   #1,   inputdata         '读数据  
          jjj   =   jjj   +   1  
          Debug.Print   inputdata  
  next   i  
  还很不错Top

13 楼junwhj(http://www.grid2000.com/cn回复于 2002-06-27 10:28:05 得分 0

Option   Explicit  
   
   
  Dim   aNum(99)   As   Integer  
   
  Private   Sub   Form_Load()  
          Randomize   Timer  
          Gen  
          Dim   n   As   Integer  
          For   n   =   0   To   79  
                  Debug.Print   aNum(n)  
          Next  
  End   Sub  
   
  Private   Sub   Gen()  
          Dim   nIndex   As   Integer  
          Dim   a,   s   As   Integer  
           
          For   nIndex   =   0   To   99  
                  aNum(nIndex)   =   nIndex   +   1  
          Next  
          For   nIndex   =   0   To   99  
                  a   =   Int(Rnd   *   100)  
                  s   =   aNum(nIndex)  
                  aNum(nIndex)   =   aNum(a)  
                  aNum(a)   =   s  
          Next  
  End   Sub  
  Top

14 楼junwhj(http://www.grid2000.com/cn)回复于 2002-06-27 10:30:21 得分 0

TO:   LIKEVB(*^-^*,能笑两笑就好了)  
  你的程序效率太低,试试上面的。Top

15 楼LIKEVB(*^-^*,能笑两笑就好了)回复于 2002-06-27 10:38:43 得分 0

好的,谢谢  
  以后请多关照Top

16 楼LIKEVB(*^-^*,能笑两笑就好了)回复于 2002-06-27 10:41:56 得分 0

马上试  
  谢谢关照Top

17 楼nik_Amis(...)回复于 2002-06-27 10:46:08 得分 0

junwhj()    
  握手,呵呵  
  Top

18 楼LIKEVB(*^-^*,能笑两笑就好了)回复于 2002-06-27 11:02:44 得分 0

谢谢  
  结了Top

19 楼starlee(StarLee)回复于 2002-06-27 12:21:02 得分 20

用一个循环跟前面的比较一下,如果有重复,再重新取一个随机数  
  a:  
    产生随机数  
    for   1   to   当前随机数的个数  
      if   新产生的随机数=当前随机数   then   goto   a  
    next  
  Top

20 楼nik_Amis(...)回复于 2002-06-27 12:29:34 得分 20

For   i   =   txt1   To   txt2  
  100:  
          a(i)   =   Int(L_hs   *   Rnd)   +   1  
          For   j   =   0   To   i   -   1  
                  If   a(i)   =   a(j)   And   i   <>   j   Then  
                  DoEvents  
                  GoTo   100  
                  End   If  
          Next   j  
          Close   #1  
          Open   App.Path   +   "/cj.txt"   For   Input   As   #1  
          Seek   1,   a(i)                                       '把指针移到文件1的第1行  
          Line   Input   #1,   inputdata         '读数据  
          jjj   =   jjj   +   1  
          Debug.Print   inputdata  
  next   i  
  还很不错  
   
  这种办法我一开始也用过  
  可是效率低了  
  如果是要求5000个  
  恐怕就要算很长时间了  

相关文章推荐

随机调整搜索算法.pdf

  • 2015年04月01日 15:56
  • 41KB
  • 下载

机器学习算法---随机森林实现(包括回归和分类)

1.随机森林回归和分类的不同:随机森林可以应用在分类和回归问题上。实现这一点,取决于随机森林的每颗cart树是分类树还是回归树。 如果cart树是分类数,那么采用的计算原则就是gini指数。随机森林基...
  • jiede1
  • jiede1
  • 2017年10月16日 00:00
  • 164

改进的最小包围球随机增量算法

  • 2015年09月29日 09:52
  • 485KB
  • 下载

svm随机次梯度下降算法-pegasos

基本思想使用随机梯度下降直接解SVM的原始问题。摘要本文研究和分析了基于随机梯度下降的SVM优化算法,简单且高效。(Ο是渐进上界,Ω是渐进下界)本文证明为获得一定准确率精度ϵ \epsilon所需的迭...

随机算法设计

  • 2014年11月15日 17:09
  • 1.78MB
  • 下载

机器学习算法之随机森林(Random Forest)

本文来自:BackNode 随机森林作为两大ensemble methods之一,近年来非常火热,本文试图探讨一下其背后原理,欢迎指正! Bagging Bagging方法是ense...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:随机算法
举报原因:
原因补充:

(最多只允许输入30个字)