随机数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/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

发表回复

登录后才能评论