我写了一个程序,希望在0到21之间产生随机整数,产生22次,而且每次产生的随机数不一样,不知道怎么控制。请大家帮忙。
下面是代码:
import java.util.Random;
import java.util.*;class RandomTest2
{
Vector v=new Vector();
Random r=new Random();
public RandomTest2()
{
double a[]=new double[22];
double moneyValue[]={0.01,0.1,0.5,1,5,10,50,100,250,500,750,1000,3000,
5000,10000,15000,20000,35000,50000,75000,100000,
250000};
int i=0;
for(int j=0;j<22;j++)
{
int n=r.nextInt(21);
v.addElement((Object)n);
i=compare(v,n);
a[i]=moneyValue[j];
System.out.println("a["+i+"]"+"="+a[i]);
}
}
public int compare(Vector v,int i)
{
int k=0;
Enumeration e=v.elements();
while(e.hasMoreElements())
{
if(e.nextElement().equals((Object)i))
{}
else
{ k=i;}
}
return k;
}
public static void main(String args[])
{
RandomTest2 app=new RandomTest2();
}
}运行结果之一如下:
a[0]=0.01
a[18]=0.1
a[7]=0.5
a[1]=1.0
a[11]=5.0
a[19]=10.0
a[15]=50.0
a[18]=100.0
a[5]=250.0
a[5]=500.0
a[14]=750.0
a[13]=1000.0
a[17]=3000.0
a[19]=5000.0
a[10]=10000.0
a[8]=15000.0
a[10]=20000.0
a[7]=35000.0
a[18]=50000.0
a[19]=75000.0
a[3]=100000.0
a[19]=250000.0
我希望没有重复的a[ i ]。我对random的应用特别不熟悉,请多多赐教!
下面是代码:
import java.util.Random;
import java.util.*;class RandomTest2
{
Vector v=new Vector();
Random r=new Random();
public RandomTest2()
{
double a[]=new double[22];
double moneyValue[]={0.01,0.1,0.5,1,5,10,50,100,250,500,750,1000,3000,
5000,10000,15000,20000,35000,50000,75000,100000,
250000};
int i=0;
for(int j=0;j<22;j++)
{
int n=r.nextInt(21);
v.addElement((Object)n);
i=compare(v,n);
a[i]=moneyValue[j];
System.out.println("a["+i+"]"+"="+a[i]);
}
}
public int compare(Vector v,int i)
{
int k=0;
Enumeration e=v.elements();
while(e.hasMoreElements())
{
if(e.nextElement().equals((Object)i))
{}
else
{ k=i;}
}
return k;
}
public static void main(String args[])
{
RandomTest2 app=new RandomTest2();
}
}运行结果之一如下:
a[0]=0.01
a[18]=0.1
a[7]=0.5
a[1]=1.0
a[11]=5.0
a[19]=10.0
a[15]=50.0
a[18]=100.0
a[5]=250.0
a[5]=500.0
a[14]=750.0
a[13]=1000.0
a[17]=3000.0
a[19]=5000.0
a[10]=10000.0
a[8]=15000.0
a[10]=20000.0
a[7]=35000.0
a[18]=50000.0
a[19]=75000.0
a[3]=100000.0
a[19]=250000.0
我希望没有重复的a[ i ]。我对random的应用特别不熟悉,请多多赐教!
上面
Random r=new Random(System.currentTimeMillis());
下面
int i = Math.abs(r.nextInt()%22);
compare(Vector v,int i);
干什么用呀
和
Random r=new Random(); 等价Random产生的是伪随机数,只要种子一样,产生的序列是一样的.!
this.seed = AtomicLong.newAtomicLong(0L);
setSeed(seed);
}???
public class RandomTest
{
public static void main(String args[])
{
int s[] = randoms();
for(int i=0;i<s.length;i++)
System.out.println(s[i]);
}
public static int[] randoms()
{
Random r = new Random();
int temp1,temp2;
int send[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};
int len = send.length;
int returnValue[] = new int[22];
for(int i=0;i<22;i++)
{
temp1 = Math.abs(r.nextInt())% len;
returnValue[i] = send[temp1];
temp2 = send[temp1];
send[temp1] = send[len-1];
send[len-1] = temp2;
len--;
}
return returnValue;
}
}
运行结果
11
13
1
6
2
9
21
5
16
17
14
15
10
7
12
8
4
3
18
0
19
20