怎么样才能生成1到100之间不重复的随机数呢?我写的程序生成的随机数里有重复的.有没有大虾来指点一下啊!
解决方案 »
- 求助求助!!!
- javaSE工程中log4j的问题
- 用java怎样实现B+树
- 多线程轮流作业输出出错!帮忙帮忙~
- 关于ActionForward重定向问题,ActionForward能不能重定向到外网的某个页面呢?比如www.google.com
- 关于java多态的一个问题?
- 如何在程序中实现选取JTbale中的指定行
- DeskTop 中添加InternalFrame的位置问题?
- 如何去掉不能识别的utf-8编码的字符
- 在JAVA程序中,如何使用Windows的API
- 同一对象二次调用 getGraphics()后返回的结果为什么
- java中有没有在文件中删除或者修改一行或者几个字符的函数?怎么实现?
int max = 100;
List buf = new ArrayList(max);
for (int i = 0; i < max; i++)
buf.add(new Integer(i + 1));
Collections.shuffle(buf);
System.out.println(buf);
然而随即数 肯定会出现重复的数字的 所以 ...
Random generator = new Random(); while (buf.size() < 100) {
buf.add(generator.nextInt(100) + 1);
}感觉效率不是很高
import java.lang.*;public class ExMath
{
Vector v1;
Vector v2;
String b,c;
public ExMath()
{
v1=new Vector(1,1);
v2=new Vector(1,1);
String[] tt={"1","2","3","4","5","6","7","8","9","10"};
for (int i=0;i<tt.length;i++)
{
v1.add(tt[i]);
}
dd();
System.out.println(v2);
}
public void dd()
{
int a;
for (int i=0;i<=10;i++)
{
a=(int)(Math.random()*11);
b=String.valueOf(a);//b为一个10以内的随机数
//让b去与数组比较,是否相等,也就是看b是否是现有数组里的数
//如果相等则先添加到新数组中,然后在从老数组中把数删除
for (int j=0;j<v1.size();j++)
{
c=(String)v1.get(j);
if (b.equals(c))
{
v2.add(c);
v1.remove(c);
dd();//回调本方法在新生成一个b继续比较
}
}
}
}
public static void main(String[] arg)
{
new ExMath();
}
}
import java.util.Collections;
import java.util.List;class TestInner {
public static void Main(String[] args) {
int max = 100;
List buf = new ArrayList(max);
for (int i = 0; i < max; i++)
buf.add(new Integer(i + 1));
Collections.shuffle(buf);
System.out.println(buf);
}
}
for(int i = 0 ; i < 100 ; i++){ a[i] = i;}
int n = a.length;
for(int i = 99 ; i >= 0 ; i--)
{
int temp = (int)(Math.random()*n--);
System.out.println(a[temp]);
a[temp] = a[i]; //把该次随机到的数的位置放最后一个数
}
如果用Random来写的话呢?自己顶一下.
=========================
扑克牌的洗牌方法!
int a[100]={1,2,...,100};
Random产生一个随机数iRandom[0-99的范围],置换a[iRandom]和a[99-iRandom];//重复此操作N次,a[100]即所求