我有一个包含字符串String options[4]
数组的程序,它包含一个问题的四个选项。一个答案是正确的。根据我的程序逻辑,程序在options[0]
放置正确的答案,并从数据库中随机选择任何其他三个名称,并将它们放在options[1]
,[2]
和{{1} }。
我试图改变将选项放在数组本身的逻辑,但这使我的程序变得复杂,所以选择不这样做。我也尝试使用随机函数来交换两个位置,但是因为我在android java中编码它,它花费太多时间,并且默认情况下,如果随机函数花费太多时间,android os停止响应。所以,我不想使用随机函数。是否有任何其他逻辑或现成功能可用于混杂阵列? 我需要一个代码随机混乱数组中的四个选项,如下所示:
[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;
}