Source

getRandom.js

import isObject from './isObject';
import getRandomBasic from './getRandomBasic';

/** 安全的 js 随机数生成方式,返回与原生 Math.random 类似的 0-1 的随机数值
 * @function getRandom
 * @category Math
 * @returns {Number} 一个介于 0 -1 的数字
 *
 * @example
 * getRandom() //=> 0.8368784293552812
 */
export default function getRandom() {
  if (typeof Uint32Array === 'function') {
    var cry = '';
    if (typeof crypto !== 'undefined') {
      cry = crypto;
    } else if (typeof msCrypto !== 'undefined') {
      // eslint-disable-next-line no-undef
      cry = msCrypto;
    }
    if (isObject(cry) && cry.getRandomValues) {
      var typedArray = new Uint32Array(1);
      var randomNumber = cry.getRandomValues(typedArray)[0];
      var integerLimit = Math.pow(2, 32);
      return randomNumber / integerLimit;
    }
  }
  return getRandomBasic(10000000000000000000) / 10000000000000000000;
}