int temp; int n=str.length; for(int i=0;i<str.length;i++) { int r=(int)(Math.random()*n); temp=str[r]; str[r]=str[n-1];//避免重复 str[n-1]=temp; n--; }
to: yuziyu 那样做是会有重复的字符出现的
int temp; int n=str.length; for(int i=0;i<str.length;i++) { int r1=(int)(Math.random()*n); int r2=(int)(Math.random()*n); temp=str[r1]; str[r1]=str[r2]; str[r2]=temp; }
Collections.shuffle(al);如果不想用ArrayList,你可以打开这个方法的源代码改成支持数组的
int n=str.length;
for(int i=0;i<str.length;i++)
{
int r=(int)(Math.random()*n);
temp=str[r];
str[r]=str[n-1];//避免重复
str[n-1]=temp;
n--;
}
那样做是会有重复的字符出现的
int n=str.length;
for(int i=0;i<str.length;i++)
{
int r1=(int)(Math.random()*n);
int r2=(int)(Math.random()*n);
temp=str[r1];
str[r1]=str[r2];
str[r2]=temp;
}
你那样做也是有重复的,你可以试一试。