【问题标题】:How to generate random number with out duplicates using JSON array in android如何在android中使用JSON数组生成不重复的随机数
【发布时间】:2013-07-05 09:56:07
【问题描述】:

我是安卓新手。我正在做测验应用程序。我有一个 JSON 数组文本文件。如何在 android 中使用 JSON 数组生成不重复的随机数。请帮助我 谢谢推荐。。 这是我的示例代码

public static JSONArray getQuesList()throws JSONException{

     ArrayList<Integer> list = new ArrayList<Integer>(size);
        for(i =size - 1; i >= 0; i--) {
            //index = rnd.nextInt(list.size());
            list.add(i);
        }

        Random rand = new Random();
        while(list.size() > 0) {
            index = rand.nextInt(list.size());
            Object object = quesList.get(index);
              quesList.put(index, quesList.get(i));
              quesList.put(i, object);
            Log.d("","Selected: "+list.remove(index));
        }
        return quesList;

【问题讨论】:

  • 为什么不将rnd.nextInt(i + 1) 加载到整数数组中,然后在子循环中检查新生成的是否存在于其中?如果是,则生成一个新的,如果不是 - 使用当前的。
  • swap 已经随机了为什么还要问?我改变我的答案。试试吧。它对我有用。

标签: android json random


【解决方案1】:

已编辑

QuestionActivity.java

全局变量

int[] quizarray = null;

添加两个函数

private void createQuizIndex() {
    int[] array = new int[QuizFunActivity.getQuesList().length()];
    quizarray = new int[QuizFunActivity.getQuesList().length()];

    for(int i = 0 ; i < QuizFunActivity.getQuesList().length() ; i++){
        array[i] = i;
    }

    Random random = new Random();
    int m = 0;
    for (int n = array.length ; n > 0; n--){    
        int r = random.nextInt(n);
        quizarray[m++] = array[r];
        array[r] = array[n-1];  
    }
}

private int getIndexNum(int quesIndex2) {
    return quizarray[quesIndex2];
}

改变每一个showQuestion

showQuestion(getIndexNum(quesIndex),review);

在第 80 行调用 createQuizIndex(),如果“重考”意味着另一个随机测验,则在第 194 行调用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2011-12-28
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多