java中如何将多个字符随机排列
假设有一串字符串,例如:有一个包含n字符的字符串abcdefghijklm.....,我想把这些字符随机取出来拼成6个字母的字符串,比如拼成adbfde。
这是数学中的一个阶乘问题,就类似于从一个桶中的n个球中取6个球,每次取一个球,记录下取出的球的标记后放入桶中,这样每个球每次被取出来的机会都一样,共有n的6次方中结果。
我上面的字符串排序的问题和数字排序的问题相同,怎么用代码实现n个字母的排序?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
试试Collections.shuffle()
言语费力,写了下实现,直接上代码吧
这样取到一个倒是没问题,但是我的意思是把所有可能的顺序都取出来就麻烦了
比如从1,2,3,4中取两个共有16中排序方式,我要的是这16中排序方式都出来。
回复
同一个数字允许取多次?这个类似于全排列算法吧。采用递归的方式,传递一个层级参数,在方法体内对数组做遍历取所有可能值,每次递归层级递减直至1。或者直接百度下全排列算法,找个效率高的改一下...
我的意思是这样的,比如箱内有1,2,3,4标号的小球,如果有放回的取2次,那么所有的顺序为,11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44,你说的使用random确实可以取到上面所有可能的顺序中的一个,但问题是我想要打印出来所有的顺序,如果用random来获取所有的顺序也可以,但是你想想就因为它是随机的,那效率就会有多不好。
把这n个字符放进数组,通过
random函数
取 0~n-1 范围内的随机数,根据随机到的数字取数组中的值