我的随机数生成函数
public void productRand()
{
while(index<3)
{
rand[index]=new Random().nextInt(20);
for(int i=0;i<index;i++)
{
if(rand[index]==rand[i])
{
index--;
}
} index++;
}
mt.setTitle("a,b,c"+rand[0]+","+rand[1]+","+rand[2]); }
菜单调用的随机数方法if(milab=="开始")
{
isbegin=true;
ispressed=false;
isshow=0;
storeindex=0;
sdlist.clear();
mt.productRand();
repaint();
}
但是我遇到的问题是 我每次点过开始菜单后 生成的随机数还是第一次生成的那一组 只有当关闭程序后再运行才生成新的一组 求解答 谢谢
public void productRand()
{
while(index<3)
{
rand[index]=new Random().nextInt(20);
for(int i=0;i<index;i++)
{
if(rand[index]==rand[i])
{
index--;
}
} index++;
}
mt.setTitle("a,b,c"+rand[0]+","+rand[1]+","+rand[2]); }
菜单调用的随机数方法if(milab=="开始")
{
isbegin=true;
ispressed=false;
isshow=0;
storeindex=0;
sdlist.clear();
mt.productRand();
repaint();
}
但是我遇到的问题是 我每次点过开始菜单后 生成的随机数还是第一次生成的那一组 只有当关闭程序后再运行才生成新的一组 求解答 谢谢
while (index < 3) {
rand[index] = new Random().nextInt(20);
index++;
}
不就能生成3个随机数了吗?
我不明白为什么你还要用一个for循环不断的把原来的值覆盖掉,搞不清你的逻辑。
{
rand[index]=new Random().nextInt(20);
修改为Random rand = new Random();
while(index<3)
{
rand[index]=rand.nextInt(20);
因为在同一毫秒中创建的Random对象,生成的随机系列是完全一样的的。又或者你改用java.security.SecureRandom
public class TestRandom {
public static void main(String args[]){
TestRandom tr=new TestRandom();
tr.random();
}
public void random(){
int[] r = new int[3];
for(int i=0;i<3;i++){
r[i]=new Random().nextInt(20);
if(i==0)
System.out.println(r[i]);
else{
if(r[i]==r[i-1])
i--;
else
System.out.println(r[i]);
}
}
}
}