2016-04-04 38 views
1

Generating Unique Random Numbers in Java非常相似。但是用字母和数字,而不仅仅是数字。生成随机数字的字母/数字,但不能使用相同的字母/数字两次

那么,我会怎么去'生成随机数字的字母/数字,但不能使用相同的字母/数字两次'。因此,例如:

好: “ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890” “QWERTYUIOPASDFGHJKLZXCVBNM0246813579” 坏: “AACDDFGHHJKLMMOPPRSTUVVWXY2335925523”

它需要包含字母表中的每一个字母,但只有一次,并以随机的顺序。

+0

链接问题的接受答案适用于任何项目集合,而不仅仅是数字。 – erickson

回答

3

拥有一组字符池,随机播放它们,然后在每次需要随机字符时弹出一个字符池。

0
  1. 声明一个List<Char>并添加到它的每一个字母,并为List<int>做相同的数字。
  2. 使用Math.random()可获得一个最大为List的长度的随机数。
  3. 使用这个数字来从List相应的项目,然后从List
  4. 重复删除它,直到List.isEmpty() == true
  5. 执行相同的数量List

编辑:@ alex的答案可能更简单。

0

另一种解决方法是制作一个包含所有你想要的字符的文本数组。

例如Char [] myArray = {“a”,“b”..};

然后从数组中取出随机索引并插入到地图中,直到地图的大小等于数组的大小。地图不会包含重复项,并且您将拥有许多随机组合。在这种情况下,地图的关键和值可以相同。

+0

为此,您必须使用排序的地图,例如一个'LinkedHashMap'。既然你对这些值不感兴趣,你也可以使用'LinkedHashSet',它保持插入顺序中的条目,但是防止重复。 –

+0

总而言之,这种方法可能需要相当长的时间,甚至不能保证终止,因为已经插入了更多的元素,插入已经包含在该集合中的元素的概率就越高。 –

相关问题