早教吧作业答案频道 -->其他-->
LotteryDrawing.java的问题.苦思冥想想不出来numbersr=numbersn-1;n--是怎么解释,Scannerin=newScanner(System.in);System.out.print("Howmanynumbersdoyouneedtodraw:");intk=in.nextInt();System.out.priint("Howmang
题目详情
LotteryDrawing.java的问题.苦思冥想想不出来numbers【r】 = numbers【n-1】;n--是怎么解释,
Scanner in = new Scanner(System.in);
System.out.print("How many numbers do you need to draw:");
int k = in.nextInt();
System.out.priint("How mang highest numbers do you need to draw: ");
int n = in .nextInt();
int[] numbers = new int[n];
for(int i = 0 ; i < numbers.length; i ++)
{
int[i] = i +1;//用1,2,3.n来填满数组;
}
int[] result = new int[k];
for(int i = 0 ; i < result.length ; i ++)
{
int r = (int)(Math.random()*n);
result[i] = numbers[r];//用随机生成的数值作为下标r,进行r+1运算后赋给result[i];
numbers[r] = numbers[n-1];//为了防止出现相同的随机值!这里我就看不懂了.什么意思啊
n--;//为了防止出现相同的随机值!这里我就看不懂了.什么意思啊
}
Scanner in = new Scanner(System.in);
System.out.print("How many numbers do you need to draw:");
int k = in.nextInt();
System.out.priint("How mang highest numbers do you need to draw: ");
int n = in .nextInt();
int[] numbers = new int[n];
for(int i = 0 ; i < numbers.length; i ++)
{
int[i] = i +1;//用1,2,3.n来填满数组;
}
int[] result = new int[k];
for(int i = 0 ; i < result.length ; i ++)
{
int r = (int)(Math.random()*n);
result[i] = numbers[r];//用随机生成的数值作为下标r,进行r+1运算后赋给result[i];
numbers[r] = numbers[n-1];//为了防止出现相同的随机值!这里我就看不懂了.什么意思啊
n--;//为了防止出现相同的随机值!这里我就看不懂了.什么意思啊
}
▼优质解答
答案和解析
numbers[r] = numbers[n-1];//
第一次:i=0
如果r==n-1,基本没意义.
如果r< n-1 就把numbers数组中的最后一项值赋给numbers[r],假设n=6,就相当于把numbers[5]赋值给numbers[r].(r>=0),此时的numbers[r]的值就和result[i](即result[0])的值不同了,可以确保numbers数据里面剩余的元素不会和result数组里面的元素重复.
n--,numbers数组里面的元素变为了(n-1)个,就是使r的值范围变成了n-1,依次类推
第一次:i=0
如果r==n-1,基本没意义.
如果r< n-1 就把numbers数组中的最后一项值赋给numbers[r],假设n=6,就相当于把numbers[5]赋值给numbers[r].(r>=0),此时的numbers[r]的值就和result[i](即result[0])的值不同了,可以确保numbers数据里面剩余的元素不会和result数组里面的元素重复.
n--,numbers数组里面的元素变为了(n-1)个,就是使r的值范围变成了n-1,依次类推
看了 LotteryDrawing...的网友还看了以下:
r满足[r+19/100]+[r+20/100]+[r+21/100]+...+[r+91/100 2020-04-07 …
请问求两个稀疏相乘,在初始化稀疏矩阵时下面这几个程序语句的作用是什么?for(r=1;rmu;r+ 2020-05-17 …
组合公式用组合的方法证明:对任意正整数n,C(r,r)+C(r+1,r)+…+C(n,r)=C(n 2020-05-23 …
扇形的周长最小,并求出此最小值周长=2r+rθ=2r+2S/r≥2√(2r*2S/r)=4√S当2 2020-05-24 …
完全平方式问题R'/(R+R')^2求最大值,把下面的平方式展开变成R'/(R^2+2RR'+R' 2020-06-27 …
matlab求解二阶导数方程,四个方程四个未知量>>symst>>E=32;G=10.81;b=2 2020-07-19 …
下面的方程组能否求解?cos(a+b)=m,cosa=r1/r,cosb=r2/r其中:m、r、s 2020-07-19 …
MATLAB中怎么解出0.5*b*R*R*x+b*R*R*r*w/4*k*exp(-x)=4.30 2020-07-23 …
什么是二项式的通式?在二项式定理(a+b)^n=C(n,0)a^n+C(n,1)a^(n-1)b+ 2020-07-31 …
下列说法正确的是()A.对于相关系数r来说,|r|≤1,|r|越接近0,相关程度越大;|r|越接近 2020-08-02 …