Try   HackMD

運用 do ... while 剔除重複值(以 JavaScript 為例)

Tags: do while Duplicate Value JavaScript

取 10 次值,範圍為 0~9 不重複

/* 已被取過的數放入 used 陣列 */
let used = [];

/* 隨機值上限 */
let num = 10;

/* 執行迴圈 */
for (let i = 0; i < 11; i++)
{
    /* 初始化隨機取值變數 */
    let k;

    /* 為避免 i 值超過隨機值時出現無限迴圈,必須限制 i 小於隨機數上限時才執行 do while */
    if (i < num) {
        do {
            k = Math.floor(Math.random() * num);
        } while (used.includes(k));

        /* 檢查 k 值 */
        console.log(k);

        /* 將本次迴圈取出的 k 值存入 used 陣列 */
        used.push(k);
    }
}

取 7 次值,範圍為 1~49 不重複

/* 已被取過的數放入 used 陣列 */
let used = [];

/* 隨機值上限 */
let num = 49;

/* 執行迴圈 */
for (let i = 0; i < 7; i++)
{
    /* 初始化隨機取值變數 */
    let k;

    /* 為避免 i 值超過隨機值時出現無限迴圈,必須限制 i 小於隨機數上限時才執行 do while */
    if (i < num) {
        do {
            k = Math.floor(Math.random() * num) + 1;
        } while (used.includes(k));

        /* 檢查 k 值 */
        console.log(k);

        /* 將本次迴圈取出的 k 值存入 used 陣列 */
        used.push(k);
    }
}