309 次浏览
几何分布是一个离散概率分布,对于 n = 0, 1, 2, …,其概率密度函数为:$$P\lgroup n\rgroup=p\lgroup1-p\rgroup^{n}$$分布函数为:$$D\lgroup n\rgroup=\displaystyle\sum\limits_{i=0}^n P\lgroup i \rgroup=1-q^{n+1}$$示例 在线演示#include #include using namespace std; int main(){ const int nrolls = 10000; // 掷骰子次数 const int nstars = 100; // 分布的最大星数 default_random_engine generator; geometric_distribution distribution(0.3); int p[10]={}; for (int i=0; i...
#include #include using namespace std; int main(){ const int nrolls = 10000; // 掷骰子次数 const int nstars = 100; // 分布的最大星数 default_random_engine generator; geometric_distribution distribution(0.3); int p[10]={}; for (int i=0; i...
335 次浏览
二项分布是一个离散概率分布Pp(n | N),表示在N次伯努利试验中获得n次成功的概率(伯努利试验有两个可能的结果,用x = 0和x = 1表示。x = 1表示成功,x = 0表示失败。成功的概率为p,失败的概率为q,q = 1 – p)。因此,二项分布可以写成$$P_{p}\lgroup n\:\arrowvert\ N\rgroup=\left(\begin{array}{c}N\ n\end{array}\right) p^{n}\lgroup1-p\rgroup^{N-n}$$示例 在线演示#include #include using namespace std; int main(){ const int nrolls = 10000; // 掷骰子次数 const int nstars = 100; // ... 阅读更多
#include #include using namespace std; int main(){ const int nrolls = 10000; // 掷骰子次数 const int nstars = 100; // ... 阅读更多
298 次浏览
伯努利分布是一个离散分布,有两个可能的结果,用x = 0和x = 1表示。x = 1表示成功,x = 0表示失败。成功的概率为p,失败的概率为q,q = 1 – p。所以$$P\lgroup x\rgroup=\begin{cases}1-p\:for & x = 0\p\:for & x = 0\end{cases}$$这也可以写成:$$P\lgroup x\rgroup=p^{n}\lgroup1-p\rgroup^{1-n}$$示例 在线演示#include #include using namespace std; int main(){ const int nrolls=10000; default_random_engine generator; bernoulli_distribution distribution(0.7); int count=0; // 计数真值 for (int i=0; i
#include #include using namespace std; int main(){ const int nrolls=10000; default_random_engine generator; bernoulli_distribution distribution(0.7); int count=0; // 计数真值 for (int i=0; i
16K+ 次浏览
生成树是无向图的一个子集,它通过最少的边将所有顶点连接起来。如果图中所有顶点都连接,则至少存在一个生成树。在一个图中,可能存在多个生成树。最小生成树最小生成树(MST)是连接加权无向图中所有顶点的边的一个子集,其总边权重最小。为了导出MST,可以使用Prim算法或Kruskal算法。因此,我们将在本章中讨论Prim算法。正如我们… 阅读更多
18K+ 次浏览
在这里,我们将了解图的DFS和BFS算法的不同应用。深度优先搜索(DFS)应用于不同的领域。一些常见的用途包括:如果对无权图执行DFS,它将为所有对最短路径树创建最小生成树我们可以使用DFS检测图中的循环。如果在BFS期间得到一条后向边,则一定存在一个循环。使用DFS,我们可以找到两个给定顶点u和v之间的路径。可以使用拓扑排序来安排给定作业之间依赖关系的作业。拓扑排序… 阅读更多
46K+ 次浏览
在本节中,我们将了解什么是图数据结构及其遍历算法。图是一种非线性数据结构。它由一些节点及其连接的边组成。边可以是有向的或无向的。这个图可以表示为G(V, E)。下面的图可以表示为G({A, B, C, D, E}, {(A, B), (B, D), (D, E), (B, C), (C, A)})图有两种类型的遍历算法。它们被称为广度优先搜索和深度优先搜索。广度优先搜索(BFS)广度优先搜索(BFS)遍历是一种算法,… 阅读更多
602 次浏览
二叉搜索树是具有某些属性的二叉树。这些属性如下:每个二叉搜索树都是一个二叉树每个左子节点的值都小于根节点每个右子节点的值都大于根节点理想的二叉搜索树不会两次保存相同的值。假设我们有一棵这样的树:这棵树是一个二叉搜索树。它遵循所有提到的属性。如果我们以中序遍历模式遍历元素,我们可以得到5、8、10、15、16、20、23。让我们来看一段代码来了解如何在… 阅读更多
428 次浏览
在本节中,我们将看到二叉搜索树的先序遍历技术(递归)。假设我们有一棵这样的树:遍历序列将是这样的:10、5、8、16、15、20、23算法先序遍历(root):开始 如果root不为空,则 打印root的值 先序遍历(root的左子树) 先序遍历(root的右子树) 结束如果结束示例 在线演示#include using namespace std; class node{ public: int h_left, h_right, bf, value; node *left, *right; }; class tree{ private: node *get_node(int key); ... 阅读更多
#include using namespace std; class node{ public: int h_left, h_right, bf, value; node *left, *right; }; class tree{ private: node *get_node(int key); ... 阅读更多
386 次浏览
在本节中,我们将看到二叉搜索树的后序遍历技术(递归)。假设我们有一棵这样的树:遍历序列将是这样的:8、5、15、23、20、16、10算法后序遍历(root):开始 如果root不为空,则 后序遍历(root的左子树) 后序遍历(root的右子树) 打印root的值 结束如果结束示例 在线演示#include using namespace std; class node{ public: int h_left, h_right, bf, value; node *left, *right; }; class tree{ private: node *get_node(int key); ... 阅读更多
373 次浏览
在本节中,我们将看到二叉搜索树的层序遍历技术。假设我们有一棵这样的树:遍历序列将是这样的:10、5、16、8、15、20、23算法层序遍历(root):开始 定义队列que来存储节点 将root插入队列。 当que不为空时,执行 item := 队列前端的项目 打印item的值 如果item的左子树不为空,则 将item的左子树插入que 结束如果… 阅读更多