【JS 常用的概率算法】

JS常用的概率算法

      • 1. Math.random() 随机数生成
      • 2. 概率分布函数
      • 3. 蒙特卡罗算法
      • 4. 马尔科夫链
      • 5.拉斯维加斯算法

JavaScript 中常用的概率算法有以下几种:

1. Math.random() 随机数生成

Math.random() 方法可以生成 [0,1) 之间的随机数,我们可以通过该方法来实现任意范围内的随机数生成,例如生成 [min, max] 范围内的随机整数:

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

2. 概率分布函数

概率分布函数是描述随机变量在每个可能取值处的概率的函数,其中最常用的是正态分布函数、均匀分布函数和指数分布函数。

3. 蒙特卡罗算法

蒙特卡罗算法利用随机采样的方式来模拟实验,并通过统计实验结果的频率来得出概率。例如,可以通过模拟抛硬币的过程来计算正面向上的概率。

下面是一个使用蒙特卡罗算法模拟计算圆周率的例子:

function estimatePi(numThrows) {
  let inCircle = 0;
  for (let i = 0; i < numThrows; i++) {
    let x = Math.random();
    let y = Math.random();
    let distance = Math.sqrt(x * x + y * y);
    if (distance <= 1) {
      inCircle++;
    }
  }
  return 4 * (inCircle / numThrows);
}

console.log(estimatePi(10000000)); // 输出圆周率的估计值

4. 马尔科夫链

马尔科夫链是一种随机过程,其中从一个状态转移到下一个状态的概率只与当前状态有关。可以利用马尔科夫链模拟状态的转移过程,并通过统计不同状态出现的频率来计算概率。例如,可以使用马尔科夫链模拟赌博游戏的输赢情况。

5.拉斯维加斯算法

拉斯维加斯算法是一种随机化算法,其特点是在进行计算时,会使用随机数来处理问题。下面是一个用于求解一元二次方程根的拉斯维加斯算法示例:

function lasVegas(a, b, c) {
  let x1, x2;
  while (true) {
    let discriminant = b * b - 4 * a * c;
    if (discriminant < 0) {
      // 无解,继续随机生成参数
      a = Math.random() * 10 - 5;
      b = Math.random() * 10 - 5;
      c = Math.random() * 10 - 5;
    } else {
      // 有解,计算根
      x1 = (-b + Math.sqrt(discriminant)) / (2 * a);
      x2 = (-b - Math.sqrt(discriminant)) / (2 * a);
      break;
    }
  }
  return { x1, x2 };
}

// 示例
let roots = lasVegas(1, 2, -3);
console.log(roots); // { x1: 1, x2: -3 }

运行结果可能因为随机数不同而有所不同。如果输入的参数无解,则算法会随机生成新的参数再进行计算。如果有解,则会计算出方程的两个根并返回。

你可能感兴趣的:(javascript,算法,开发语言)