JavaScript random - izudon/izudon.github.io GitHub Wiki

ๆฆ‚่ฆ

  • Math.random() ๏ผˆ 0 ใ‹ใ‚‰ 1 ใพใงใฎ้ฉๅฝ“ใชๅ€คใ‚’ๆตฎๅ‹•ๅฐๆ•ฐ็‚นๆ•ฐใง่ฟ”ใ™ ๏ผ‰ ใŒๆœ‰ๅใ€‚
  • crypto.getRandomValues() ใจใ„ใ†ๆ–นๆณ•ใŒใ‚ใ‚‹ใ€‚
    • ใ“ใ‚Œใฏใ€ๅผ•ๆ•ฐใซๆŒ‡ๅฎšใ•ใ‚ŒใŸ TypedArray ใ‚’ใ€ใƒฉใƒณใƒ€ใƒ ใชใƒ“ใƒƒใƒˆใงๅŸ‹ใ‚ใ‚‹ใ€‚
      const ary = new Uint32Array(4);
      crypto.getRandomValues(ary).join("-");
      //=> '3881914314-1197039356-218537310-172348544' ใชใฉใ€‚
      
    • .toString() ใ™ใ‚‹ใจๅ„่ฆ็ด ใ‚’10้€ฒๆ•ฐ่กจ่จ˜ใ—ใŸใ‚‚ใฎใ‚’ .join(",") ใ—ใŸใ‚‚ใฎใŒ่ฟ”ใ•ใ‚Œใ‚‹ใ€‚
      btoa() ใ—ใฆใ‚‚ .toString() ใ—ใŸใ‚‚ใฎใ‚’ Base64 ใ‚จใƒณใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ—ใŸใ‚‚ใฎใŒ่ฟ”ใ‚‹ใ€‚
      ใƒใƒƒใƒ•ใ‚กใใ‚Œ่‡ชไฝ“ใ‚’้€ฃ็ถšใƒ“ใƒƒใƒˆใจ่ฆ‹ใฆ Base64 ใชใ‚Š 16้€ฒ่กจ่จ˜ ใชใ‚Šใ™ใ‚‹ใซใฏใ€
      ๅ„่ฆ็ด ใ‚’้€ๆฌก็š„ใซ 16้€ฒๅค‰ๆ› ใ—ใŸใ‚‚ใฎใ‚’้€ฃ็ตใ™ใ‚‹ไปฅๅค–ใซใฏใชใ„ใ‚‰ใ—ใ„ใ€‚
      let str = btoa(ary);
      //=> 'Mzg4MTkxNDMxNCwxMTk3MDM5MzU2LDIxODUzNzMxMCwxNzIzNDg1NDQ='
      atob(str);
      //=> '3881914314-1197039356-218537310-172348544'
      ["",...ary].reduce((a,b)=>a+b.toString(16));
      //=> 'e7614fca47595efcd069d5ea45d480'
      ["",...ary].reduce((a,b)=>a+("00000000"+b.toString(16)).substr(-8));
      //=> 'e7614fca47595efc0d069d5e0a45d480'