Java 如何生成随机字符串
我使用了一个Java 如何生成随机字符串,java,android,random,Java,Android,Random,我使用了一个EditText小部件,客户端可以在其中输入信息,然后我在ArrayList中保存了几个条目。现在我想从ArrayList中随机选择其中一个条目。如何从ArrayList中随机选择一个元素 我已经尝试过这些方法,但当我运行它时,它崩溃了 String myrandomString = String.valueOf(rand.nextInt(options.size())); //int myrandomString = rand.nextInt(options.toString()
EditText
小部件,客户端可以在其中输入信息,然后我在ArrayList
中保存了几个条目。现在我想从ArrayList
中随机选择其中一个条目。如何从ArrayList
中随机选择一个元素
我已经尝试过这些方法,但当我运行它时,它崩溃了
String myrandomString = String.valueOf(rand.nextInt(options.size()));
//int myrandomString = rand.nextInt(options.toString().length());
如果我理解正确,您已经有了一个
ArrayList
,其中包含以前输入的字符串,当用户输入新字符串时,它将被追加到此列表中。
您要做的是从该列表中选择一个随机字符串。
您可以使用java.util.Random
类从列表中生成一个随机索引,并返回位于该索引上的单词。
例如,下面的代码将在每次执行时打印测试列表的随机成员
Random random = new Random();
List<String> test = Arrays.asList("Text1","Text2","Text3","Text4");
System.out.println(test.get(Math.abs(random.nextInt()) % test.size()));
Random Random=new Random();
列表测试=Arrays.asList(“Text1”、“Text2”、“Text3”、“Text4”);
System.out.println(test.get(Math.abs(random.nextInt())%test.size());
编辑
如评论中所述,将
Math.abs(random.nextInt())%test.size()
替换为random.nextInt(test.size())
将使代码更具可读性,并减少生成大量重复的机会(这将使数字分布更加均匀).首先在arrayList大小内选择一个随机索引:
int randIdx = new Random().nextInt(arrayList.size());
然后获取该索引处的字符串
String randString = arrayList.get(randIdx);
从你的问题中不清楚你的问题是什么。如果你想要一个高质量/相关的答案,请考虑修改。请添加一些解释性的文本,这样就可以得到一个更好的答案。方法调用也完成了这一过程,而不需要最终的<代码> %测试。siz()<代码>它不仅完成了同样的任务,甚至更好。模运算极大地减少了返回数的随机性。@BjörnZurmaar你能给我指一些资源来解释为什么模运算符在这种情况下会减少随机性吗?这不仅仅是在这种情况下,这是使用这种随机数生成器时的一般效果。参见有效的Java项目47,例如这个问题:谢谢你提供的信息,伙计们,我将更新答案。