0

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

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

String options[] = new String[4];
options[0]="Correct Answer";
options[1]="Wrong Answer 1";
options[2]="Wrong Answer 2";
options[3]="Wrong Answer 3";
//here i want the code to jumble

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

4

3 回答 3

3

这很简单:

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

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

看:

于 2012-10-29T15:19:30.067 回答
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;
}
于 2013-11-13T16:55:19.200 回答
-1

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

由于您已定义optionsString 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;
    }
于 2012-10-29T08:07:04.707 回答