
export module RandomEx {

    /**
     * 取得隨機布林值
     */
    export function GetBool() {
        return GetInt() >= 0;
    }
    /**
     * 取得隨機整數(回傳min ~ max - 1)
     * @param min
     * @param max
     */
    export function GetInt(min: number = Number.MIN_VALUE, max: number = Number.MAX_VALUE): number {
        return Math.floor(Math.random() * (max - min)) + min;
    }
    /**
     * 取得隨機小數
     * @param min 
     * @param max 
     */
    export function GetFloat(min: number = Number.MIN_VALUE, max: number = Number.MAX_VALUE): number {
        return Math.random() * (max - min) + min;
    }
    /**
     * 隨機取得複數個不重複回傳
     * @param num 取得數量
     * @param items 陣列 
     */
    export function GetMultiNoRepeat(num: number, items: any[]): any[] {
        let result: any[] = [];
        for (let i: number = 0; i < num; i++) {
            let ran: number = Math.floor(Math.random() * items.length);
            let item = items.splice(ran, 1)[0];
            if (result.indexOf(item) == -1) {
                result.push(item);
            }
        };
        return result;
    }
}
