随机答案的可能性

时间:2012-05-04 16:21:42

标签: java android random

我在Android上为我的班级做了一个相当可靠的测验游戏,从阵列中挑选了10个随机问题。它现在的工作方式是用户在EditText字段中输入答案。我也很高兴我能够弄清楚如何使用简单的shuffle算法来获取重复的问题,因此用户抛出的每一个问题都是独一无二的(我实在为此感到非常自豪)。

理想情况下,想要让游戏成为多项选择,但我没时间用完了,我按照上面提交了它。但我一直在考虑如何让游戏更好,用户友好,我认为EditText的选择不是理想的IMO。所以我一直在考虑像这样重写它:

  1. 选择随机问题;
  2. 问题将显示4个随机答案选项,其中一个将是正确的答案;
  3. 我将使用RadioButtons和RadioGroup作为答案选择;
  4. 棘手的部分:我希望答案选择能够随机显示和排序,例如:
    • 问题x被选中,答案选择将以随机顺序显示a,b,c,rightAnswer;
    • 然后问题y被选中,答案选择将是b,rightAnswer,c,a
    • 等...
  5. 所以我想知道是否有人能指出我如何实现这一目标的正确方向。我不是要求完整的代码,只是我可以阅读更多关于它的地方,并帮助我弄明白。我似乎在SO中找到的是获取随机问题的方法。

    提前致谢!

2 个答案:

答案 0 :(得分:1)

创建一个数组来保存你的答案。然后从0- [array.length]中选择一个随机数,并将数组中的索引设置为正确的答案。即:

int[] answers = new int[4];
answers[0] = getRandomAnswer();
answers[1] = getRandomAnswer();
answers[2] = getRandomAnswer();
answers[3] = getRandomAnswer();

int correctIndex = Random.nextInt(0,4); // Maybe off by 1? I didn't compile
answers[correctIndex] = correctAnswer;

现在你有一个包含3个随机答案和1个正确答案的数组。您需要确保getRandomAnswer()方法不会向您返回正确的答案,或者此时检查您的数组是否有正确答案的多个实例,如果它们存在则删除除一个以外的所有实例。

您可以使用数组中的答案填充RadioGroup,并通过在选择组中的某个单选按钮时检查correctIndex变量来了解用户是否正确。

答案 1 :(得分:1)

可能有更多有效或优雅的方式专门设置4个随机位置,这是我的建议:

    int setPlace[4] = {0,0,0,0};

    setPlace[0] = Random.nextInt(3) + 1;

    for (loop = 1; loop<=3; Loop++)
 {
    do 
    {
    fix1 = Random.nextInt(3) + 1;
    if ((fix1!=setPlace[0])&&(fix1!=setPlace[1])&&(fix1!=setPlace[2])(fix1!=setPlace[3]))
    {
    setPlace[loop]=fix1;
    fix1=0;
    }
    }
    while{fix1!=0} 
}