gpt4 book ai didi

java - 随机但每个只能出现一次

转载 作者:行者123 更新时间:2023-12-02 01:54:56 24 4
gpt4 key购买 nike

我正在使用 android studio 制作一个应用程序。

我想制作一个“随机”函数。这就是 java 中的样子:

final String[] lesquestions = {"random1", "random2", "random3"};
b_question.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int rando_questions = (int) (Math.random() * 3);

question.setText(lesquestions[rando_questions]);
}
});

它工作正常,但我希望当一个字符串出现时,它被从列表中取出,所以它不会出现两次。

编辑:更准确地说:随机数是问题,我希望问题只出现一次,不重复。

最佳答案

final List<String> lesquestions = newArrayList<>();
Collections.addAll(lesquestions, "random1", "random2", "random3");

b_question.setOnClickListener(new View.OnClickListener() {
Random random = new Random();

@Override
public void onClick(View view) {
if (lesquestions.isEmpty()) {
question.setText("Fini");
return;
}
int questionIndex = random.nextInt(lesquestions.size());
question.setText(lesquestions.remove(questionIndex));
}
});

要选择一个新的随机问题,可以删除随机选择的项目,但不是从固定大小的数组中删除,而是从一个集合中删除,即 Set<String>如果问题必须是独特的,或List<String>如果您希望重复提问。

  • Arrays.asList会将数组/字符串枚举转换为列表,由该数组支持,因此固定大小。因此当需要删除时就无法使用。
  • 创建随机数比 Math.random 更具体一些但是nextInt(int n)更清楚:值 0, 1, 2, ..., n-1。
  • List.remove返回被删除的元素,因此它同时充当 getter。
  • 一度没有任何疑问。

好机会。

关于java - 随机但每个只能出现一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52445397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com