JS 随机生成五位数

js 随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么

   记录并且介绍四种方法,而且会详细说明由来以及原因,只是一个学习的记录,请各位指正。


第一种:用的是Math.random乘100000来输出五位数,并不推荐,代码量大,而且并不是最优选择。

var num = parseInt(Math.random()*100000)//首先创建一个五位数的随机数(Number)
        console.log(num)//打印出来
        //把每一位都单独提出来
        var one = parseInt(num/10000);
        var two = parseInt(num/1000%10);
        var thr = parseInt(num/100%10);
        var four= parseInt(num/10%10);
        var fif = num % 10;            
        //倒着输出一下
        var arr = [fif,four,thr,two,one]
        //循环删除最后的0,这个方法笨一点,if嵌套判断
        for(var i = 0;i<arr.length;i++){
                if(Number(arr[4])===0){
                    arr.pop()
                    // console.log(arr,arr.length)
                    if(Number(arr[3])===0){
                        arr.pop()
                        // console.log(arr,arr.length)
                        if(Number(arr[2])===0){
                            arr.pop()
                            // console.log(arr,arr.length)
                            if(Number(arr[1])===0){
                            arr.pop()  
                            }else{break}
                        }else{break}
                    }else{break}
                }else{
                    break;
                }
            }
            //输出arr这个数组,并且输出长度
            console.log(arr,arr.length)
            //接下来输出每一位
            console.olg(arr[0],...)

第二种:用的是Math.random乘100000来输出五位数,然后利用循环来让五位数的每一位输入到数组,需要注意的是如果等于0,需要跳出本次循环。

        var arr = [];//首先利用字面量生成一个空数组
            //利用Math.random乘100000来生成五位数(Number)
        var random_num = parseInt(Math.random() * 100000);
            //打印出来看一看
        console.log(random_num);
            //设置一个名为count的记录变量
        var count = 0;
            //for循环来为arr空数组来赋值
        for(var i = 0; i < 5; i++){
                //给这个五位数(Number)求模,第一次循环的时候是个位,第二次循环时十位...
            var res = random_num % 10;
                //如果求模等于0,证明这次生成的数为0,退出本次循环
            if(random_num === 0){
                continue;
            }
                //每一次循环都/10,然后求整,为了下一次循环求模创造条件
            random_num = parseInt(random_num / 10);
                //把每一次求模得到的数添加到数组
            arr.push(res);
                //count记录变量记录添加的次数
            count++;
        }
        console.log(count);
        console.log(arr);
        console.log(arr[0],...)

第三种:这种方法比较绕一点,但是和上面俩种思想不一样

利用的是生成随机数组个数然后再填入随机数

    //先创建函数来封装这个方法
function getRnadomFiveInt(){
        //创建空数组
     var temp = [];
            //for循环来生成随机五个数组元素,有可能是五个||四个||其他
         for(var i = 0 ; i < 1 + parseInt( Math.random() * 5) ; i ++){
                //生成一个random_int的变量来存放0-9的随机数
             var random_int = parseInt( Math.random() * 10 );
                    //如果这个数组为0位||生成的随机数为0,random_int被赋值为random_int+0-9的随机数然后求模
                 if( i === 0 && random_int === 0 ){
                     random_int  = (parseInt( Math.random() * 10 ) + random_int) % 10;
                 }
                    //在temp空数组中添加随机数
                 temp.push( random_int );
            }
            //输出数组,数组长度,并且输出数组的每一位直接添加-号
    console.log(temp , temp.length , temp.join("-"));
}
//执行函数
getRnadomFiveInt();

第四种:这一种和上一种的思想基本一样,不同的是这种利用了递归思想

//先创建函数来封装这个方法
function getRnadomFiveInt(){
        //创建空数组
     var temp = [];
            //for循环来生成随机五个数组元素,有可能是五个||四个||其他
         for(var i = 0 ; i < 1 + parseInt( Math.random() * 5) ; i ++){
                //生成一个random_int的变量来存放0-9的随机数
                var random_int = parseInt( Math.random() * 10 );
                    //如果这个数组为0位||生成的随机数为0,返回函数,利用递归来继续循环
                    if( i === 0 && random_int === 0 ){
                    return getRnadomFiveInt();
                }
                    //在temp空数组中添加随机数
                 temp.push( random_int );
            }
            //输出数组,数组长度,并且输出数组的每一位直接添加-号
    console.log(temp , temp.length , temp.join("-"));
}
//执行函数
getRnadomFiveInt();

上面四种方法只是自己遇到这样的题思考得出,并不代表全部,如果还有其他比较好玩的方法,欢迎留言

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值