前端基础题目(一)

1.生成一个16位的随机数字

Math.random()会生成一个小数点后16位的小数,然后截取后16位即可,问题是末尾可能为0,导致不够16位。那么就严格控制长度。

var fun = function() {
   
  let res = "0";
  while(res.length !== 16){
   
    res = String(Math.random()).split('.')[1].slice(0, 16); 
  }
  return res;
}

2. 基于非空str生成一个16位随机数

已知一个非空字符串变量 str,请基于 str 生成一个16位的随机数字,也就是不同的 str 值随机数字不同,但是相同的 str 值生成的随机数是一样的。

方法很多,比如:
先用charCodeAt()方法将每个字符都转成 0~65535 的Unicode码,然后拼接起来,再通过一个符合一一映射的数学函数映射成一个16位的随机数。

const seed = function (str) {
   
  // 通过Unicode码拼接变成数值
  let num = str.split('').map(char => char.charCodeAt()).join('');
  // 对应sin变成随机数值
  return Math.sin(num).toString().split(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值