Java:如何使用随机索引构建给定长度的数组';它是从另一个数组中获取的

Java:如何使用随机索引构建给定长度的数组';它是从另一个数组中获取的,java,arrays,random,Java,Arrays,Random,我正在做我自己的小项目,我有一个小问题 假设我有一个字符串数组{“绿色”、“蓝色”} 我希望能够创建一个具有一定长度的新数组,例如100,每个索引0-100都是从上述字符串数组中随机选择的,因此我应该得到: {"Green", "Green", "Blue", "Green", "Blue", "Blue", "Green", ... "Blue"} 这看起来很简单,我不知道为什么我会很难过。如果有人能以一种非常简单的方式帮助我解决这个问题,我会尝试测试我的逻辑,而不是我的代码知识。谢谢 应该

我正在做我自己的小项目,我有一个小问题

假设我有一个字符串数组
{“绿色”、“蓝色”}

我希望能够创建一个具有一定长度的新数组,例如100,每个索引0-100都是从上述字符串数组中随机选择的,因此我应该得到:

{"Green", "Green", "Blue", "Green", "Blue", "Blue", "Green", ... "Blue"}

这看起来很简单,我不知道为什么我会很难过。如果有人能以一种非常简单的方式帮助我解决这个问题,我会尝试测试我的逻辑,而不是我的代码知识。谢谢

应该足够简单,比如下面的内容

for(String item : largeArray){
    int randomIndex = (int)(Math.random() * smallArray.length);
    item = smallArray[randomIndex];
}

应该足够简单,比如下面的内容

for(String item : largeArray){
    int randomIndex = (int)(Math.random() * smallArray.length);
    item = smallArray[randomIndex];
}

我过去也经常生成随机数。为了实现真正的随机生成,我邀请您使用random.org java库。你可以在这里找到它:

诚然,这是一个客户端,需要互联网连接,但如果你想成为专业人士,我邀请你深入这个库

您也可以使用java basic库,只需使用数学库即可。不过,这是一个伪随机数生成器。阅读这篇文章

决定要选择哪种类型的随机性后,只需迭代:

RandomIntegerClient cl = new RandomIntegerClient("youremail@foo.bar");
List <String> myRandomIntegers = 
    cl.getRandomIntDecimal(0, initialArray.length, finalArray.length);
for (int i = 0; i<finalArray.length; i++) {
    finalArray[i] = initialArray[Integer.parseInt(myRandomIntegers.get(i))]
}
RandomIntegerClient cl=新的RandomIntegerClient(“youremail@foo.bar");
列出MyRandomInteger=
cl.getRandomIntDecimal(0,initialArray.length,finalArray.length);

对于(int i=0;i我过去也曾生成随机数。为了实现真正的随机生成,我邀请您使用random.org java library。您可以在这里找到它:

诚然,这是一个客户端,需要互联网连接,但如果你想成为专业人士,我邀请你深入这个库

您也可以使用java basic库,只需使用数学库,但这是一个伪随机数生成器

决定要选择哪种类型的随机性后,只需迭代:

RandomIntegerClient cl = new RandomIntegerClient("youremail@foo.bar");
List <String> myRandomIntegers = 
    cl.getRandomIntDecimal(0, initialArray.length, finalArray.length);
for (int i = 0; i<finalArray.length; i++) {
    finalArray[i] = initialArray[Integer.parseInt(myRandomIntegers.get(i))]
}
RandomIntegerClient cl=新的RandomIntegerClient(“youremail@foo.bar");
列出MyRandomInteger=
cl.getRandomIntDecimal(0,initialArray.length,finalArray.length);

对于(int i=0;i您需要做的就是将数组的大小设置为100,然后将第一个数组的随机索引添加到第二个数组中。以下是一种方法:

public static void main(String[] args) {
    Random rand = new Random(); //used for adding random places of array
    String[] array = {"Green","Blue"}; //creates new array
    String[] array2 = new String[100]; // makes size of array 100

    for(int i = 0; i < array2.length; i++) { //executes until 'array2' s full
        int index = rand.nextInt(2); //chooses a random index of 'array'
        array2[i] = array[index]; //adds that spot to 'array2'
        //System.out.println(index); //uncomment to prove that it is adding random things
    }
    System.out.println(Arrays.toString(array2));
}
publicstaticvoidmain(字符串[]args){
Random rand=new Random();//用于添加数组的随机位置
String[]数组={“绿色”,“蓝色”};//创建新数组
String[]array2=新字符串[100];//使数组大小为100
对于(int i=0;i
只需将数组大小设置为100,然后将第一个数组的随机索引添加到第二个数组中。以下是一种方法:

public static void main(String[] args) {
    Random rand = new Random(); //used for adding random places of array
    String[] array = {"Green","Blue"}; //creates new array
    String[] array2 = new String[100]; // makes size of array 100

    for(int i = 0; i < array2.length; i++) { //executes until 'array2' s full
        int index = rand.nextInt(2); //chooses a random index of 'array'
        array2[i] = array[index]; //adds that spot to 'array2'
        //System.out.println(index); //uncomment to prove that it is adding random things
    }
    System.out.println(Arrays.toString(array2));
}
publicstaticvoidmain(字符串[]args){
Random rand=new Random();//用于添加数组的随机位置
String[]数组={“绿色”,“蓝色”};//创建新数组
String[]array2=新字符串[100];//使数组大小为100
对于(int i=0;i
我将使用一个,
限制生成随机值,然后将其转换为数组。这可以通过以下方法完成:

String[] array = { "Blue", "Green" };
Random rand = new Random();
String[] out = Stream.generate(() -> array[rand.nextInt(array.length)]) //
        .limit(100).toArray(String[]::new);
System.out.println(Arrays.toString(out));

我会用一个,
限制生成随机值,然后将其转换为数组

String[] array = { "Blue", "Green" };
Random rand = new Random();
String[] out = Stream.generate(() -> array[rand.nextInt(array.length)]) //
        .limit(100).toArray(String[]::new);
System.out.println(Arrays.toString(out));
Random#int(长流大小、int原点、int边界)
返回产生给定数量的伪随机int值的流, 每个符合给定的
来源
(包括)和
绑定
(排除)

Random#int(长流大小、int原点、int边界)
返回产生给定数量的伪随机int值的流, 每个符合给定的
来源
(包括)和
绑定
(排除)


那么,让我们看看你的逻辑!哪一部分是困难的?欢迎来到SO。请阅读并编辑你的问题以包括一个。我初始化initalArray={“绿色”,“蓝色”},然后我使用一个带有随机索引生成器的for循环,该随机索引生成器将输出表示绿色或蓝色的0或1,然后我会迷失方向,因为如果数组不包含元素,我不知道如何为数组分配长度值。
String strArray[]=new String[100];
如果数组不包含元素,我不知道如何为数组分配长度值-也许这应该是你的问题,那么告诉我们你的逻辑吧!什么部分比较难?欢迎这么做。请接受、阅读并编辑你的问题以包含一个。我初始化initalArray={“绿色”、“蓝色”},然后我使用一个带有随机索引生成器的for循环,该随机索引生成器将输出表示绿色或蓝色的0或1,然后我会迷失方向,因为如果数组不包含元素,我不知道如何为数组分配长度值。
String strArray[]=new String[100]
如果数组不包含元素,我不知道如何为数组分配长度值-也许这应该是你的问题我不熟悉for循环格式,你能解释一下吗?我不熟悉for循环格式,你能解释一下吗?列表基本上是将元素分配给未定义元素的唯一方法ed长度数组,对吗?不,不是真的。你可以有d的空数组