1<html> 2<!-- 3 Copyright (c) 2003 Vladimir Prus 4 5 Distributed under the Boost Software License, Version 1.0. 6 (See accompanying file LICENSE_1_0.txt or copy at 7 http://www.boost.org/LICENSE_1_0.txt) 8 --> 9<head> 10<title>Boost Graph Library: random</title> 11 12<body BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" 13 ALINK="#ff0000"> 14<IMG SRC="../../../boost.png" 15 ALT="C++ Boost" width="277" height="86"> 16 17<br> 18 19The header <tt><boost/graph/random></tt> provides routines to create 20random graph, select random vertices and edges, and randomize properties. 21 22<h1>Synopsis</h1> 23 24<pre> 25 26 template <class Graph, class RandomNumGen> 27 typename graph_traits<Graph>::vertex_descriptor 28 random_vertex(Graph& g, RandomNumGen& gen); 29 30 template <class Graph, class RandomNumGen> 31 typename graph_traits<Graph>::edge_descriptor 32 random_edge(Graph& g, RandomNumGen& gen); 33 34 template <typename MutableGraph, class RandNumGen> 35 void generate_random_graph 36 (MutableGraph& g, 37 typename graph_traits<MutableGraph>::vertices_size_type V, 38 typename graph_traits<MutableGraph>::vertices_size_type E, 39 RandNumGen& gen, 40 bool self_edges = false); 41 42 template<class Property, class G, class RandomGenerator> 43 void randomize_property(G& g, RandomGenerator rg); 44 45</pre> 46 47<h1>Description</h1> 48 49<h2 id="random_vertex">random_vertex</h2> 50 51<pre> 52 template <class Graph, class RandomNumGen> 53 typename graph_traits<Graph>::vertex_descriptor 54 random_vertex(Graph& g, RandomNumGen& gen); 55</pre> 56 57<p><b>Effects:</b> Selects a random vertex in a graph and returns it. 58<p><b>Preconditions:</b> <tt>num_vertices(g) != 0</tt> 59<p><b>Complexity:</b> <tt>O(num_vertices(g))</tt> 60 61<h2 id="random_edge">random_edge</h2> 62 63<pre> 64 template <class Graph, class RandomNumGen> 65 typename graph_traits<Graph>::edge_descriptor 66 random_edge(Graph& g, RandomNumGen& gen); 67</pre> 68 69<p><b>Effects:</b> Selects a random edge in a graph and returns it. 70<p><b>Preconditions:</b> <tt>num_edges(g) != 0</tt> 71<p><b>Complexity:</b> <tt>O(num_edges(g))</tt> 72 73<h2 id="generate_random_graph">generate_random_graph</h2> 74 75<pre> 76 template <typename MutableGraph, class RandNumGen> 77 void generate_random_graph 78 (MutableGraph& g, 79 typename graph_traits<MutableGraph>::vertices_size_type V, 80 typename graph_traits<MutableGraph>::vertices_size_type E, 81 RandNumGen& gen, 82 bool allow_parallel = true, 83 bool self_edges = false); 84</pre> 85 86<p><b>Effects:</b> Adds <tt>V</tt> vertices and <tt>E</tt> edges, to 87<tt>g</tt>. Source and target vertices of each edge are randomly choosen. If 88<tt>self_edges</tt> is false, then no edge will have the same source and 89targets. 90<p><b>Precondition:</b> <tt>num_vertices(g) == 0</tt> 91<p><b>Compleixity:</b> <tt>O(V*E)</tt> 92 93<h2 id="randomize_property">randomize_property</h2> 94 95<pre> 96 template<class Property, class G, class RandomGenerator> 97 void randomize_property(G& g, RandomGenerator& rg); 98</pre> 99 100<p><b>Effects:</b> Sets the random value of property on either all vertices, or 101all edges, depending on property kind. 102<p><b>Complexity:</b> <tt>O(V)</tt> or <tt>O(E)</tt>, depending on property 103kind. 104 105<hr> 106 107<p class="revision">Last modified: Feb 05, 2003</p> 108 109<p>© Copyright Vladimir Prus 2003. Permission to copy, use, modify, 110sell and distribute this document is granted provided this copyright 111notice appears in all copies. This document is provided ``as is'' without 112express or implied warranty, and with no claim as to its suitability for 113any purpose.</p> 114 115</body> 116 117</html> 118