隨機數Js的詳細闡述

一、隨機數Js代碼

Js中生成隨機數的代碼有很多,包括Math庫的random、window.crypto.getRandomValues等等。其中,Math庫的random方法是最常用的。Math.random方法返回一隨機浮點數,範圍在[0, 1)之間(包括0, 不包括1),可根據需求將其映射為其他值。

// 生成隨機整數,範圍在[min, max] 之間 (包括min, max)
function randomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

該函數可以輕鬆生成min到max範圍內的隨機整數。

二、隨機數表

隨機數表是一個預處理好的表格,包含了預先生成好的隨機數。通過使用這個表格,可以獲得大量隨機數而不需要每次都調用隨機數生成函數。這樣可以節省隨機數生成的時間。

// 隨機數表
const randomTable = [
  0.1234,
  0.5678,
  0.9012,
  0.3456,
  0.7890,
  ...
];

使用這個表格可以很快地獲得隨機數:

// 取出隨機數表中的一個隨機數
function getRandomFromTable() {
  return randomTable[Math.floor(Math.random() * randomTable.length)];
}

三、隨機數個數及總和不變Js

有時候,需要生成一組隨機數,這組隨機數的個數固定且總和不變。下面是一個使用Fisher-Yates shuffle算法生成的隨機數。該算法的優點是生成的隨機數順序較為隨機。

// 生成一組固定個數、總和不變的隨機數
function randomSumArray(sum, count) {
  let arr = [];
  for (let i = 0; i < count - 1; i++) {
    const randomNum = Math.floor(Math.random() * (sum / 2));
    arr.push(randomNum);
    sum -= randomNum;
  }
  arr.push(sum);
  for (let i = 0; i < arr.length - 1; i++) {
    const j = Math.floor(Math.random() * (arr.length - i));
    const temp = arr[j];
    arr[j] = arr[arr.length - 1 - i];
    arr[arr.length - 1 - i] = temp;
  }
  return arr;
}

該方法使用了兩次循環,第一次循環生成了一個隨機數數組,第二次循環使用Fisher-Yates shuffle算法將數組順序打亂。最終,生成的隨機數數組中包含了指定個數的數值且總和不變。

四、隨機數函數

可以通過編寫自定義的隨機數函數來控制生成的隨機數。例如下面這個函數可以生成一組隨機數,可以設置隨機數們的總和、平均值、其中一個數值等等:

// 生成定製化的隨機數
function randomFactory({ sum, count, avg, max, min, target }) {
  let arr = [];
  let total = 0;
  for (let i = 0; i < count - 1; i++) {
    const maxNum = max || sum / 2;
    const minNum = min || 0;
    const randomNum = Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum;
    arr.push(randomNum);
    total += randomNum;
  }
  if (target) {
    const diff = target - total;
    arr.push(diff);
  } else if (sum) {
    const diff = sum - total;
    arr.push(diff / (count - 1));
  } else if (avg) {
    const diff = avg * count - total;
    arr.push(diff / count);
  } else {
    arr.push(Math.floor(Math.random() * (max - min + 1)) + min);
  }
  return arr;
}

可以通過傳入不同的參數來實現各種需要的隨機數生成。

五、隨機數列

有時候,需要生成一列符合某些條件的隨機數。例如下面這個函數可以生成一組隨機數列,每個數的範圍都是在前後兩個數之間。

// 生成符合條件的隨機數列
function randomSequence(count, min, max) {
  const arr = new Array(count);
  arr[0] = Math.floor(Math.random() * (max - min + 1)) + min;
  for (let i = 1; i < count - 1; i++) {
    arr[i] = Math.floor(Math.random() * (Math.min(arr[i-1], max) - min + 1)) + min;
  }
  arr[count-1] = Math.floor(Math.random() * (Math.min(arr[count-2], max) - min + 1)) + min;
  return arr;
}

通過該函數可以輕鬆生成符合特定條件的隨機數列。

六、隨機數在線

有時候,需要在網頁上實時展示隨機數(例如在線抽獎),下面的代碼可以在網頁上實時生成隨機數展示。

// 在網頁上實時生成隨機數
document.getElementById('generateBtn').addEventListener('click', () => {
  const min = parseInt(document.getElementById('minInput').value);
  const max = parseInt(document.getElementById('maxInput').value);
  const GeneratedNumEl = document.getElementById('generatedNum');
  GeneratedNumEl.innerHTML = Math.floor(Math.random() * (max - min + 1)) + min;
});

通過該代碼可以在網頁上實現實時生成指定範圍內的隨機數。

七、隨機數的機制

隨機數生成的機制是偽隨機數生成器。由於計算機是可計算的,無法真正隨機,因此隨機數的生成使用了偽隨機數生成器。偽隨機數生成器是使用一些特定的種子作為輸入,採用一定的算法來生成隨機數。由於產生隨機數的算法是一致的,因此偽隨機數生成器生成的隨機數都是可以被預測的。可以通過修改種子值來使隨機數生成更為隨機。

八、Js生成隨機數

在JS中,可以使用Math庫中random方法生成隨機小數,通過映射也可以生成指定範圍的隨機數。以下是JS生成指定範圍內的隨機整數的代碼:

function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

九、Js生成1到99隨機數

生成1到99的隨機整數的代碼如下:

function getRandomFrom1to99() {
  return Math.floor(Math.random() * 99) + 1;
}

上述代碼將生成1到99(包括1和99)之間的隨機整數。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240050.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:19
下一篇 2024-12-12 12:20

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python生成隨機數的應用和實例

    本文將向您介紹如何使用Python生成50個60到100之間的隨機數,並將列舉使用隨機數的幾個實際應用場景。 一、生成隨機數的代碼示例 import random # 生成50個6…

    編程 2025-04-29
  • 如何使用random生成不重複的隨機數

    在編程開發中,我們經常需要使用隨機數來模擬一些場景或生成一些數據。但是如果隨機數重複,就會造成數據的不準確性。這時我們就需要使用random庫來生成不重複且隨機的數值。下面將從幾個…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • Python生成隨機數的多種方法

    本文將從以下幾個方面詳細介紹如何使用Python生成隨機數。 一、random模塊的使用 Python內置的random模塊能夠生成偽隨機數,使用該模塊,可以生成隨機數、隨機整數等…

    編程 2025-04-29
  • Python隨機數生成器

    Python隨機數生成器是一個常用的工具,它可以生成各種類型的隨機數,包括整數、浮點數和字符串等,廣泛用於模擬、遊戲、加密、測試等多個領域。本文將從多個方面對Python隨機數生成…

    編程 2025-04-28
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • JS圖片沿着SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿着SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • Python生成1~100隨機數(代碼示例)

    本文將詳細闡述Python生成1~100隨機數,包括其定義、應用場景、實現方法等,幫助讀者更好的掌握該技能。 一、定義 隨機數是指在一定範圍內任選的數值,能夠在一定程度上保證數據的…

    編程 2025-04-27

發表回復

登錄後才能評論