【JS 常用的概率算法】

本文介绍了JavaScript中常用的几种概率算法,如Math.random()生成随机数、概率分布函数、蒙特卡罗算法(如计算圆周率)、马尔可夫链和拉斯维加斯算法(如解一元二次方程)。这些算法展示了如何利用随机性和统计方法在编程中处理不确定性问题。
摘要由CSDN通过智能技术生成


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 }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值