有点问题请老师解答一下

来源:4-8 编程练习

CC陈十一

2019-03-13 20:30:36

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Math.random()</title>

</head>

<body>

<script>

    //补充代码

    function rand(m,n){

        var a=n-m+1;

        return Math.floor(Math.random()*a+m)

    }

    //var rand1=rand(1,100);

    var numb=[];

    for(i=0;i<10;i++){

        numb[i]=rand(1,100)//为什么如果是numb[i]=rand1,就会变成十个一样的数字

    }

    var rank=numb.sort(function(x,y){return y-x})+"<br/>";

    var big=numb[0];//为什么这里定义成rank[0],rank[9]输出的就不是最大最小值,rank不应该是排列好的数组吗?

    var little=numb[9];

    document.write(rank); 

    document.write("这组数中最大的值是:"+big+",最小的值是:"+little);

</script>

</body>

</html>



写回答

2回答

山河远阔ZZ

2019-03-14

同学你好,第二次贴的代码有以下几个问题:

1、“numb[i]=rand1“,因为在for循环外面执行了一次,值是固定的,所以循环出来的是一样的数。

2、在排序的时候进行换行,会把随机数隔开,如下:

http://img.mukewang.com/climg/5c89cf450001ce8909810071.jpg

例如随机数是98,那么br换行就变成了,“9 8 ,”,所以,取出来的最大值和最小值是不对的。

想把随机出来的数组跟最大值最小值不在一行显示,可以在输出数组的时候进行换行,参考下图:

http://img.mukewang.com/climg/5c89cf050001ecaa11220591.jpg

自己试一试哦,如果帮助到了你,欢迎采纳。

祝学习愉快!


0
hC陈十一
h 好的,谢谢老师
h019-03-14
共1条回复

山河远阔ZZ

2019-03-14

同学你好。

代码中是做的降序排序:

http://img.mukewang.com/climg/5c89bc110001bcba09430053.jpg

降序排序的话,数组中的第一个数值就是最大值,最后一个数值就是最小值,所以想获取排序中的最大值和最小值,通过下标获取即可。

数组中存放十个数值,rank[0]代表第一个值,rank[9]代表最后一个值;

如果帮助到了你,欢迎采纳。

祝学习愉快!

0
hC陈十一
h 试过了,输出的依然不是最大最小值,总是个位数 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>Math.random()</title> </head> <body> <script> //补充代码 function rand(m,n){ var a=n-m+1; return Math.floor(Math.random()*a+m) } //var rand1=rand(1,100); var numb=[]; for(i=0;i<10;i++){ numb[i]=rand(1,100)//为什么如果是numb[i]=rand1,就会变成十个一样的数字 } var rank=numb.sort(function(x,y){return y-x})+"<br/>"; var big=rank[0];//为什么这里定义成rank[0],rank[9]输出的就不是最大最小值,rank不应该是排列好的数组吗? var little=rank[9]; document.write(rank); document.write("这组数中最大的值是:"+big+",最小的值是:"+little); </script> </body> </html>
h019-03-14
共1条回复

0 学习 · 36712 问题

查看课程