這是我以前寫的,封裝成獨立函式,那個ran()是主要的,不過可能寫得會有點亂,但是用是ok的,"use strict";var random, arr = [], random_oo, oo = 0;var r, a = 1, b = 1, c, n, num, k, result, m;/*** 生成min到max之間的隨機整數並返回。* @param min* @param max* @returns {number}*/function ran_sc(min, max) {random = Math.round(Math.random() * (max - min)) + min;return random;}/*** 生成唯一隨機數需要,檢測當前隨機數與陣列內所有數字重複情況。* @param x 隨機數* @returns {number} 重複情況* 唯一(陣列內所有數字沒有和x重複,返回0;* 有重複,返回1。*/function csqian(x) {oo = 0;for (var l = 0; l < arr.length; l++) {if (x === arr[l]) oo = 1;}return oo;}/*** 主呼叫函式。* @param min 最小值* @param max 最大值* @param zushu 組數,要生成隨機數的個數。* @param chong_fu 是否重複,隨便生成為true,生成唯一為false、* @returns {Array} 隨機數陣列*/function ran(min, max, zushu, chong_fu) {arr = [];if (chong_fu === true) {//隨便random = arrran(min, max, zushu);return random;} else if (chong_fu === false) {//唯一random = arrran_oo(min, max, zushu);return random;}}/*** 隨便生成* @param min* @param max* @param zushu* @returns {Array}*/function arrran(min, max, zushu) {for (var i = 0; i <= (zushu - 1); i++) {arr[i] = ran_sc(min, max);}return arr;}/*** 生成唯一隨機數函式的判斷選擇。。* @param min* @param max* @param zushu* @returns {Array}*/function arrran_oo(min, max, zushu) {if (zushu > (max - min + 1)) {console.log(min);console.log(max);console.log(zushu);alert("組數應不超過能生成的所有不一樣的隨機數的數目\n(即組數不超過(最大值-最小值+1))");} else {random = c_s(min, max, zushu);return random;}}/*** 生成唯一隨機數* @param min* @param max* @param zushu 組數* @returns {Array}*/function c_s(min, max, zushu) {for (m = 0; m <= Infinity; m++) {if (m === zushu) break;random_oo = ran_sc(min, max);if (csqian(random_oo) === 0) {arr[m] = random_oo;} else if (csqian(random_oo) === 1) {random_oo = ran_sc(min, max);m -= 1;}}return arr;}var r_ = ran(1, 1100, 10, false);let INum = 0;//這裡是使用者輸入的數let EP = -1;for (let i = 0; i < r_.length; ++i) {if (r_[i] === INum) EP = i;}console.log("輸入的數: " + INum);console.log("生成隨機數結果: " + r_.toString());console.log("結果: " + EP);
這是我以前寫的,封裝成獨立函式,那個ran()是主要的,不過可能寫得會有點亂,但是用是ok的,"use strict";var random, arr = [], random_oo, oo = 0;var r, a = 1, b = 1, c, n, num, k, result, m;/*** 生成min到max之間的隨機整數並返回。* @param min* @param max* @returns {number}*/function ran_sc(min, max) {random = Math.round(Math.random() * (max - min)) + min;return random;}/*** 生成唯一隨機數需要,檢測當前隨機數與陣列內所有數字重複情況。* @param x 隨機數* @returns {number} 重複情況* 唯一(陣列內所有數字沒有和x重複,返回0;* 有重複,返回1。*/function csqian(x) {oo = 0;for (var l = 0; l < arr.length; l++) {if (x === arr[l]) oo = 1;}return oo;}/*** 主呼叫函式。* @param min 最小值* @param max 最大值* @param zushu 組數,要生成隨機數的個數。* @param chong_fu 是否重複,隨便生成為true,生成唯一為false、* @returns {Array} 隨機數陣列*/function ran(min, max, zushu, chong_fu) {arr = [];if (chong_fu === true) {//隨便random = arrran(min, max, zushu);return random;} else if (chong_fu === false) {//唯一random = arrran_oo(min, max, zushu);return random;}}/*** 隨便生成* @param min* @param max* @param zushu* @returns {Array}*/function arrran(min, max, zushu) {for (var i = 0; i <= (zushu - 1); i++) {arr[i] = ran_sc(min, max);}return arr;}/*** 生成唯一隨機數函式的判斷選擇。。* @param min* @param max* @param zushu* @returns {Array}*/function arrran_oo(min, max, zushu) {if (zushu > (max - min + 1)) {console.log(min);console.log(max);console.log(zushu);alert("組數應不超過能生成的所有不一樣的隨機數的數目\n(即組數不超過(最大值-最小值+1))");} else {random = c_s(min, max, zushu);return random;}}/*** 生成唯一隨機數* @param min* @param max* @param zushu 組數* @returns {Array}*/function c_s(min, max, zushu) {for (m = 0; m <= Infinity; m++) {if (m === zushu) break;random_oo = ran_sc(min, max);if (csqian(random_oo) === 0) {arr[m] = random_oo;} else if (csqian(random_oo) === 1) {random_oo = ran_sc(min, max);m -= 1;}}return arr;}var r_ = ran(1, 1100, 10, false);let INum = 0;//這裡是使用者輸入的數let EP = -1;for (let i = 0; i < r_.length; ++i) {if (r_[i] === INum) EP = i;}console.log("輸入的數: " + INum);console.log("生成隨機數結果: " + r_.toString());console.log("結果: " + EP);