java随机数怎么做加权
发布网友
发布时间:2022-05-10 07:21
我来回答
共1个回答
热心网友
时间:2023-11-19 20:07
class C9
{
static int i;
static void sui()
{
System.out.println("\n 排序前:");
float [] a=new float[30];
for(i=0;i<30;i++)
{
a[i]=(float)(Math.random()*20);//获得30个随机数
System.out.print(" "+a[i]+" ");
if((i+1)%3==0)
System.out.println();
}
pai(a);
}
static void pai(float a[])
{
System.out.println("\n 排序后:");
for(i=0;i<29;i++) //冒泡法排序
{
for(int j=0;j<29-i;j++)
{
if(a[j]>a[j+1])
{
float t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<30;i++)
{
System.out.print(" "+a[i]+" ");
if((i+1)%3==0)
System.out.println();
}
suip(a); //把数组传给下个函数
}
static void suip(float a[]) //把函数打乱,
{
int k=1;
int l=0;
int d;
int [] b=new int[30];
float [] c=new float[30];
c[0]=a[0];
b[0]=(int)(Math.random()*30);
while(k<30)
{
d=(int)(Math.random()*30); //随机一个30内整数给d
for(l=0;l<k;l++)
{
if(b[l]==d) //d的数和数组里的数比较,若有重复,则退出for循环,返还上面重新给d赋值
break;
if(l==k-1) //把d里的数写进c数组
{
b[k]=d;
c[d]=a[k];
k++;
}
}
}
System.out.println("\n打乱后:");
for(i=0;i<30;i++)
{
d=b[i]; //数组的值给c数组的下标,把a数组的值给c数组
c[d]=a[i];
System.out.print(" "+c[i]+" ");
if((i+1)%3==0)
System.out.println();
}
}
public static void main(String[] args)
{
sui();
}
}