生成字母/数字的随机数组,但不能两次使用相同的字母/数字



与Java中生成唯一随机数非常相似。但是用字母和数字,而不仅仅是数字。

那么我该如何处理"生成字母/数字的随机数组,但不能两次使用同一个字母/数字"呢。例如:

好:"abcdefghijklmnopqrstuvxyz1234567890"QWERTYUIOPASDFGHJKLZXCVBNM0246813579"错误:"aacddfghhjklmmopprstuvwxy2335925523"

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

有一个字符池的数组,对它们进行洗牌,然后在每次需要随机字符时弹出一个。

  1. 声明一个List<Char>,并将每个字母添加到其中,并对数字的List<int>执行同样的操作
  2. 使用Math.random()可以得到一个长度不超过List的随机数
  3. 使用该编号从List中获取相应项目,然后将其从List中删除
  4. 重复直到List.isEmpty() == true
  5. 对编号List执行相同操作

编辑:亚历克斯的答案可能更简单。

另一个解决方案是创建一个包含所有所需字符的文本数组。

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

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

最新更新