论文网
English Papers
万事OK网
发表论文
 
 首页 > IT文章 > 程序设计 >
随机算法研究

[科技论文网] http://www.scipapers.com    2007-12-01  

    随机算法研究

    朋友问我一个问题:“随机出来1~100中的10个数字,不能有任何重复的数字出现,但是要求不能每次对随机出的数进行验证”,要是没有最后一个要求那就很简单了,不能对每次随机的数字进行验证,这就是说要一次随机出来的数字就是唯一的,这也就是说下一次随机的数组中就不能有已经输出的数字了,呵呵,想到一个办法,
            1、把你最终的结果预先放在一个数组中;
      2、random产生一个随机下标,我们取出对应的数组中的值;
            3、然后用数组最后一个值替换下标数组中的值;
            4、将产生随机下标的范围逐个减少1;
        public   class   MyRandom1{
                    private static  Random random=new  Random();
                    public  static  void main(String[ ] args ){
                    int NUM=100;
                    int cont[ ]=new int[NUM];
                    for (int i=1;i<NUM;i++){
                          cont[i]=1;
                    } 
                   for(int j=0;j<NUM;j++){
                     int index=random.nextInt(100);
                     System.out.println("The random number is :"+cont[index]);
                     cont[index]=cont[NUM-1-j];
                    }
                }

    };
        这个不是很好的算法就解决了这个问题,由于数字很少,使用一个简单的数组就能解决问题了,随之而来,我找个了一个很好的题目:
            某单位要设计一个考核,题库里总共有100道题目,其中30道选择题,30道填空题,20道问答题,20道论叙题;每次出题采用的是考生自己选择考核时间然后电脑随机出题,每次出20道选择题,20道填空题,10道问答题,10道论叙题,每张试卷出题不能有重复,确定考核开始,开始时间倒记时,考核时间可以由考核人员确定,距离结束时间5分钟出现对话框时提示考生,还有30秒时出现声音提示,时间到了准时自动交卷;
          这个到记时以及出现对话框的设计都很简单,重点他也有个要求,就是和上面的要求一样,不要验证,并且不能模仿上面的算法,晕,存心刁难...........

    转注:还有一个算法可以这样做,首先把n个数初始给对应的数组元素,然后每次循环随机产生两个随机数,作为两个下标,然后交换这两个位置上的数组元素,循环多次(比如1000次),差不多就行了

        来源:

声明:本文由网友推荐或作者提交,版权归原作者所有,刊登此文仅为传播知识,展示研究成果,提高文章引用率。未经原作者授权,禁止用于任何形式的商业行为。科技论文网倡导尊重知识、尊重劳动、保护原创、知识共享。由于部分论文文章来于网络,文章作者不祥,请相关的原创作者与我们联系,以便加上您的署名。

  
随机算法研究
下面没有链接了     拷贝链表的O(n)算法
最新论文
·[程序设计]随机算法研究
·[程序设计]拷贝链表的O(n)算法
·[程序设计]Prim算法完整实现代码
·[程序设计]矩阵旋转算法的实现
·[程序设计]格雷码算法C源码
·[程序设计]凸壳串行算法
·[程序设计]常用算法设计方法:贪婪法
·[程序设计]递归实现数组元素相乘
·[程序设计]地图着色算法C语言实现
·[程序设计]链式实现的堆栈
 
 

搜索论文

Google
论文分类

论文网 论文发表网 论文 免费论文网 找论文网 毕业论文 中国论文网 英语论文 百度论文 聘教网 易搜
 免费发布论文    中国论文网 2008版权所有  业务联系:pinjiao@126.com