混乱的数组元素

时间:2012-10-29 07:56:32

标签: java arrays

我有一个包含字符串String options[4]数组的程序,它包含一个问题的四个选项。一个答案是正确的。根据我的程序逻辑,程序在options[0]放置正确的答案,并从数据库中随机选择任何其他三个名称,并将它们放在options[1][2]和{{1} }。

我试图改变将选项放在数组本身的逻辑,但这使我的程序变得复杂,所以选择不这样做。我也尝试使用随机函数来交换两个位置,但是因为我在android java中编码它,它花费太多时间,并且默认情况下,如果随机函数花费太多时间,android os停止响应。所以,我不想使用随机函数。是否有任何其他逻辑或现成功能可用于混杂阵列? 我需要一个代码随机混乱数组中的四个选项,如下所示:

[3]

请提供代码.. 非常感谢。

3 个答案:

答案 0 :(得分:3)

很简单:

Collections.shuffle(Arrays.asList(yourArray));

Arrays.asList()提供了由提供的数组支持的List,因此当List被洗牌时,底层(原始)数组也是如此。

请参阅:

答案 1 :(得分:0)

您可以使用Fisher-Yates shuffle

Random r = new Random();
for(int i = options.length - 1; i > 0; i--){
    int rand = r.nextInt(i);
    String temp = options[i];
    options[i] = options[rand];
    options[rand] = temp;
}

答案 2 :(得分:-1)

编辑:如评论中所述,请忽略此解决方案并使用上面提供的解决方案。

由于您已将options定义为String options[],因此我假设您使用Java进行编码。所以这里是Java中的混乱代码:

    String options[] = new String[4];
    options[0]="Correct Answer";
    options[1]="Wrong Answer 1";
    options[2]="Wrong Answer 2";
    options[3]="Wrong Answer 3";

    final int jumbleTries = 100;
    Random rand = new Random();

    for(int i = 0; i < jumbleTries; i++)
    {

        int index1 = rand.nextInt(options.length);
        int index2 = rand.nextInt(options.length);

        if (index1 == index2)
            continue;

        String temp = options[index1];
        options[index1] = options[index2];
        options[index2] = temp;
    }