在没有重复的范围内生成随机数

我正在尝试从 firebase随机化测验问题。我正在尝试生成 0-50 之间的随机数,将它们添加到一个数组中,一旦使用了该数字,我就希望删除该数字。但它会随着重复而永远存在,这是我用来生成随机的一段代码


我在 oncreate 和测验的 4 个选择按钮上调用 updatequestion()。


public void updateQuestion (){


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

        questionNos.add(i);

    }

    Random r = new Random();

    index = r.nextInt(questionNos.size()-1);

    mQuestionNo = questionNos.remove(index);


    mQuestionRef = new Firebase("https://class9notes-2808b.firebaseio.com/"+mQuestionNo+"/question");

    mQuestionRef.addValueEventListener(new ValueEventListener() {

        @Override

        public void onDataChange(DataSnapshot dataSnapshot) {

            String question = dataSnapshot.getValue(String.class);

            questiontextview.setText(question);


        }


        @Override

        public void onCancelled(FirebaseError firebaseError) {


        }

    });

    mChoice1Ref = new Firebase("https://class9notes-2808b.firebaseio.com/"+mQuestionNo+"/choice1");

    mChoice1Ref.addValueEventListener(new ValueEventListener() {

        @Override

        public void onDataChange(DataSnapshot dataSnapshot) {

            String choice1 = dataSnapshot.getValue(String.class);

            bchoice1.setText(choice1);

        }


        @Override

        public void onCancelled(FirebaseError firebaseError) {


        }

    });

    mChoice2Ref = new Firebase("https://class9notes-2808b.firebaseio.com/"+mQuestionNo+"/choice2");

    mChoice2Ref.addValueEventListener(new ValueEventListener() {

        @Override

        public void onDataChange(DataSnapshot dataSnapshot) {

            String choice2 = dataSnapshot.getValue(String.class);

            bchoice2.setText(choice2);

        }


        @Override

        public void onCancelled(FirebaseError firebaseError) {


        }

    });

  

哈士奇WWW
浏览 164回答 3
3回答

吃鸡游戏

通过改组列表,您可以将 0 到 49 之间的所有数字随机放置在列表中:questionNos.clear();&nbsp; // if not empty&nbsp;for (int i = 0; i < 50; i++) {&nbsp; &nbsp; questionNos.add(i);}Collections.shuffle(questionNos);

蓝山帝景

使用这段代码ArrayList<Integer> numbers = new ArrayList<Integer>();&nbsp; &nbsp;Random randomGenerator = new Random();while (numbers.size() < 50) {&nbsp; &nbsp; int random = randomGenerator.nextInt(50); // will generate a random number from 0 to 50&nbsp; &nbsp; if (!numbers.contains(random)) {&nbsp; //will check whether the number is repeated or not&nbsp; &nbsp; &nbsp; &nbsp; numbers.add(random); //if number is not repeated then it will add it in array&nbsp; &nbsp; }}

慕尼黑5688855

您的updateQuestion().&nbsp;for (int i = 0; i < 50; i++) {&nbsp; &nbsp; &nbsp; &nbsp; questionNos.add(i);&nbsp;}因此,如果questionNos之前电话中已有 49 个问题,updateQuestion()您将收到 99 个问题,其中 98 个问题是重复的,依此类推。把它移到只被调用一次的地方,比如构造函数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java