2017-02-15 61 views
2

我正在学习Java ArrayList,并且我想填写的(s),使用从010的随机数。这是到目前为止我的代码:乱码范围与arraylist

import java.util.ArrayList; 
import java.util.Collections; 

public class manejoListas { 
    ArrayList<Integer> lista=new ArrayList<>(20); 

    public void llenarLista() { 
     for (int i=0; i<20;i++) { 
       lista.add(i); 
     } 
     Collections.shuffle(lista); 
     System.out.println(lista); 
    } 
} 

,这是输出:

[3,5,9,10,19,8,6,4,15 2,0,18 ,16,12,14,7,17,13,1,11]

我怎样才能得到范围从0到10?

回答

1

你可以改变

lista.add(i); 

lista.add(i/2); 

将范围缩小到0(含) - 10(不含)。请注意,每个数字将出现两次。如果您希望值更随机分布的,你可以使用Random.nextInt(int)

static Random rand = new Random(); 

public void llenarLista() { 
    for (int i = 0; i < 20; i++) { 
     lista.add(rand.nextInt(10)); 
    } 
    // Collections.shuffle(lista); 
    System.out.println(lista); 
} 
+0

猜测随机数,可以完全除去混洗。 OP与Shuffle和随机混淆 –

+0

这非常有帮助,我将在下周进行测试,并且我正在练习一切。坦克你非常! :) –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ你可以用'shuffle'来做到这一点,见我答案的第一部分。但这意味着,最后一个因素是完全可预测的。 –

2

Java和我想,以填补与随机数20种元素的ArrayList从0到10

在那种情况下你需要随机数字。不洗牌功能。

Random rn = new Random(); 

然后

for (int i = 0; i < 20; i++) { 
     lista.add(rn.nextInt(10);); 
    } 

即保持添加0之间和10