| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 808 人关注过本帖
标题:自己写的一个随机数的算法
只看楼主 加入收藏
xlwt2113
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2004-10-14
收藏
 问题点数:0 回复次数:6 
自己写的一个随机数的算法

要求:指定显示一定数目的数字,如显示1到12这些数字,要求数字随机排列并全部显示出来。每次运行程序后 这些数字的顺序都不相同!

代码:

import java.lang.*; import java.util.*;

public class MakeRandomNum { public void getRandom()throws Exception { String [] a=new String[12]; Random rndTemp = new Random(); int flag=1; String rnum=new String("w");//先付一个初始值 for(int i=0;i<12;i++) { do { flag=1; Float num=new Float(rndTemp.nextFloat()*12+1); rnum=num.toString(); rnum=rnum.substring(0,rnum.indexOf(".")); for(int j=0;j<i;j++) { if(a[j].equals(rnum)) { flag=0; // System.out.print("t"); } } }while(flag==0); a[i]=rnum; System.out.println(a[i]); } } public static void main(String args[]) { try{ MakeRandomNum my=new MakeRandomNum(); my.getRandom(); }catch(Exception e) { System.out.print(e); } } }

运行结果:

可能算法不是很优化,在数字为千个以内速度很快,试了个50000的,运行了好几分钟!差点死机!:( 大家来一起看看有没有更好的算法啊?!

搜索更多相关主题的帖子: 随机数 算法 
2005-09-22 11:06
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
你是不是想实现洗牌这样的动作啊?就是说想那些数重新搅和一下, 是不是这个意思?

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-22 11:42
xlwt2113
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2004-10-14
收藏
得分:0 
是的!差不多着个意思

2005-09-22 11:49
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
那Java 有个现成的函数,你看看下面的连接。

http://java.

那个shuffle 函数你可以用。 如果你有JBuilder 可以 这个函数的代码,你看了就知道他的算法了。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-22 12:47
xlwt2113
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2004-10-14
收藏
得分:0 
有程序调用的例子么?jdk的帮助都是英文的,看了老半天也不太清楚是怎么一回事!
谢了!

2005-09-22 13:26
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
//请使用JDK1.5
import java.util.*;

public class Shuffle
{
  public static void main(String args[])
  {
    String [] nums = new String[12];
    for(int i = 0; i&lt;12; i++)
    {
      nums[i] = new Integer(i+1).toString();
    }

    List&lt;String&gt; list = new ArrayList&lt;String&gt;();
    for (String a : nums)
      list.add(a);
    Collections.shuffle(list, new Random());
   
    System.out.println(list);
  }
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-22 14:37
xlwt2113
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2004-10-14
收藏
得分:0 
不胜感激!!!
原来我用的1.4的jdk
又装了一个1.5的jdk,现在已经调试好了!!

2005-09-22 15:16
快速回复:自己写的一个随机数的算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043135 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved