/* * name; */ export default class MathUtils { /** * 获取从min-max之间的值,包括min max * @param min * @param max */ static rang(min, max) { return Math.random() * (max - min) + min; } static random(min: number, max: number) { min = Math.min(min, max); max = Math.max(min, max); var range: number = max - min; return min + Math.random() * range; } static randomInt(min: number, max: number) { return Math.floor(this.random(min, max + 1)); } /** * 概率随机 * @param arr */ public static getRandomResult(arr: number[]): number { var leng = 0; //获取总数 for (var i = 0; i < arr.length; i++) { leng += arr[i] } for (var i = 0; i < arr.length; i++) { //获取 0-总数 之间的一个随随机整数 var random = Math.random() * leng //如果在当前的概率范围内,得到的就是当前概率 if (random < arr[i]) { return i } else { //否则减去当前的概率范围,进入下一轮循环 leng -= arr[i] } } } /** * 计算两点距离 */ public static cacuDis(x1: number, y1: number, x2: number, y2: number): number { return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); } static cacuAngle(x1: number, y1: number, x2: number, y2: number) { return Math.atan2(y2 - y1, x2 - x1) / Math.PI * 180; } /** * 求余 * @param value * @param max */ public static cacuSurplus(value: number, max: number) { while (value < 0) { value += max; } while (value >= max) { value -= max; } return value; } static between(value: number, min: number, max: number) { if (min > max) { let temp = min; min = max; max = temp; } return Math.max(min, Math.min(value, max)); } static subPoint(value: number, cnt: number) { let s = Math.pow(10, cnt); return Math.round(value * s) / s; } }