本文整理汇总了Python中sage.misc.randstate.current_randstate函数的典型用法代码示例。如果您正苦于以下问题:Python current_randstate函数的具体用法?Python current_randstate怎么用?Python current_randstate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了current_randstate函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: random_element
def random_element(self):
"""
Return a random element of this group.
EXAMPLES::
sage: G = Sp(4,GF(3))
sage: G.random_element() # random
[2 1 1 1]
[1 0 2 1]
[0 1 1 0]
[1 0 0 1]
sage: G.random_element() in G
True
::
sage: F = GF(5); MS = MatrixSpace(F,2,2)
sage: gens = [MS([[1,2],[-1,1]]),MS([[1,1],[0,1]])]
sage: G = MatrixGroup(gens)
sage: G.random_element() # random
[1 3]
[0 3]
sage: G.random_element() in G
True
"""
# Note: even with fixed random seed, the Random() element
# returned by gap does depend on execution order and
# architecture. Presumably due to different memory loctions.
current_randstate().set_seed_gap()
F = self.field_of_definition()
return self.element_class(gap(self).Random()._matrix_(F), self, check=False)
示例2: conjugacy_class_representatives
def conjugacy_class_representatives(self):
"""
Return a set of representatives for each of the conjugacy classes
of the group.
EXAMPLES::
sage: G = SU(3,GF(2))
sage: len(G.conjugacy_class_representatives())
16
sage: len(GL(2,GF(3)).conjugacy_class_representatives())
8
sage: len(GU(2,GF(5)).conjugacy_class_representatives())
36
"""
current_randstate().set_seed_gap()
try:
return self.__reps
except AttributeError:
pass
G = self._gap_().ConjugacyClasses()
reps = list(gap.List(G, 'x -> Representative(x)'))
F = self.field_of_definition()
self.__reps = Sequence([self(g._matrix_(F)) for g in reps], cr=True, universe=self, check=False)
return self.__reps
示例3: RandomLinearCodeGuava
def RandomLinearCodeGuava(n,k,F):
r"""
The method used is to first construct a `k \times n` matrix of the block
form `(I,A)`, where `I` is a `k \times k` identity matrix and `A` is a
`k \times (n-k)` matrix constructed using random elements of `F`. Then
the columns are permuted using a randomly selected element of the symmetric
group `S_n`.
INPUT:
Integers `n,k`, with `n>k>1`.
OUTPUT:
Returns a "random" linear code with length n, dimension k over field F.
EXAMPLES::
sage: C = RandomLinearCodeGuava(30,15,GF(2)); C # optional - gap_packages (Guava package)
Linear code of length 30, dimension 15 over Finite Field of size 2
sage: C = RandomLinearCodeGuava(10,5,GF(4,'a')); C # optional - gap_packages (Guava package)
Linear code of length 10, dimension 5 over Finite Field in a of size 2^2
AUTHOR: David Joyner (11-2005)
"""
current_randstate().set_seed_gap()
q = F.order()
gap.eval("C:=RandomLinearCode("+str(n)+","+str(k)+", GF("+str(q)+"))")
gap.eval("G:=GeneratorMat(C)")
k = int(gap.eval("Length(G)"))
n = int(gap.eval("Length(G[1])"))
G = [[gfq_gap_to_sage(gap.eval("G[%s][%s]" % (i,j)),F) for j in range(1,n+1)] for i in range(1,k+1)]
MS = MatrixSpace(F,k,n)
return LinearCode(MS(G))
示例4: RandomDirectedGNC
def RandomDirectedGNC(self, n, seed=None):
"""
Returns a random GNC (growing network with copying) digraph with n
vertices.
The digraph is constructed by adding vertices with a link to one
previously added vertex. The vertex to link to is chosen with a
preferential attachment model, i.e. probability is proportional to
degree. The new vertex is also linked to all of the previously
added vertex's successors.
INPUT:
- ``n`` - number of vertices.
- ``seed`` - for the random number generator
EXAMPLE::
sage: D = digraphs.RandomDirectedGNC(25)
sage: D.edges(labels=False)
[(1, 0), (2, 0), (2, 1), (3, 0), (4, 0), (4, 1), (5, 0), (5, 1), (5, 2), (6, 0), (6, 1), (7, 0), (7, 1), (7, 4), (8, 0), (9, 0), (9, 8), (10, 0), (10, 1), (10, 2), (10, 5), (11, 0), (11, 8), (11, 9), (12, 0), (12, 8), (12, 9), (13, 0), (13, 1), (14, 0), (14, 8), (14, 9), (14, 12), (15, 0), (15, 8), (15, 9), (15, 12), (16, 0), (16, 1), (16, 4), (16, 7), (17, 0), (17, 8), (17, 9), (17, 12), (18, 0), (18, 8), (19, 0), (19, 1), (19, 4), (19, 7), (20, 0), (20, 1), (20, 4), (20, 7), (20, 16), (21, 0), (21, 8), (22, 0), (22, 1), (22, 4), (22, 7), (22, 19), (23, 0), (23, 8), (23, 9), (23, 12), (23, 14), (24, 0), (24, 8), (24, 9), (24, 12), (24, 15)]
sage: D.show() # long time
REFERENCE:
- [1] Krapivsky, P.L. and Redner, S. Network Growth by
Copying, Phys. Rev. E vol. 71 (2005), p. 036118.
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
return DiGraph(networkx.gnc_graph(n, seed=seed))
示例5: RandomDirectedGN
def RandomDirectedGN(self, n, kernel=lambda x:x, seed=None):
"""
Returns a random GN (growing network) digraph with n vertices.
The digraph is constructed by adding vertices with a link to one
previously added vertex. The vertex to link to is chosen with a
preferential attachment model, i.e. probability is proportional to
degree. The default attachment kernel is a linear function of
degree. The digraph is always a tree, so in particular it is a
directed acyclic graph.
INPUT:
- ``n`` - number of vertices.
- ``kernel`` - the attachment kernel
- ``seed`` - for the random number generator
EXAMPLE::
sage: D = digraphs.RandomDirectedGN(25)
sage: D.edges(labels=False)
[(1, 0), (2, 0), (3, 1), (4, 0), (5, 0), (6, 1), (7, 0), (8, 3), (9, 0), (10, 8), (11, 3), (12, 9), (13, 8), (14, 0), (15, 11), (16, 11), (17, 5), (18, 11), (19, 6), (20, 5), (21, 14), (22, 5), (23, 18), (24, 11)]
sage: D.show() # long time
REFERENCE:
- [1] Krapivsky, P.L. and Redner, S. Organization of Growing
Random Networks, Phys. Rev. E vol. 63 (2001), p. 066123.
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
return DiGraph(networkx.gn_graph(n, kernel, seed=seed))
示例6: RandomLobster
def RandomLobster(n, p, q, seed=None):
"""
Returns a random lobster.
A lobster is a tree that reduces to a caterpillar when pruning all
leaf vertices. A caterpillar is a tree that reduces to a path when
pruning all leaf vertices (q=0).
INPUT:
- ``n`` - expected number of vertices in the backbone
- ``p`` - probability of adding an edge to the
backbone
- ``q`` - probability of adding an edge (claw) to the
arms
- ``seed`` - for the random number generator
EXAMPLE: We show the edge list of a random graph with 3 backbone
nodes and probabilities `p = 0.7` and `q = 0.3`::
sage: graphs.RandomLobster(3, 0.7, 0.3).edges(labels=False)
[(0, 1), (1, 2)]
::
sage: G = graphs.RandomLobster(9, .6, .3)
sage: G.show() # long time
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
return graph.Graph(networkx.random_lobster(n, p, q, seed=seed))
示例7: DegreeSequenceExpected
def DegreeSequenceExpected(deg_sequence, seed=None):
"""
Returns a random graph with expected given degree sequence. Raises
a NetworkX error if the proposed degree sequence cannot be that of
a graph.
One requirement is that the sum of the degrees must be even, since
every edge must be incident with two vertices.
INPUT:
- ``deg_sequence`` - a list of integers with each
entry corresponding to the expected degree of a different vertex.
- ``seed`` - for the random number generator.
EXAMPLES::
sage: G = graphs.DegreeSequenceExpected([1,2,3,2,3])
sage: G.edges(labels=False)
[(0, 2), (0, 3), (1, 1), (1, 4), (2, 3), (2, 4), (3, 4), (4, 4)]
sage: G.show() # long time
REFERENCE:
.. [ChungLu2002] Chung, Fan and Lu, L. Connected components in random
graphs with given expected degree sequences.
Ann. Combinatorics (6), 2002 pp. 125-145.
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
return Graph(networkx.expected_degree_graph([int(i) for i in deg_sequence], seed=seed), loops=True)
示例8: RandomDirectedGNR
def RandomDirectedGNR(self, n, p, seed=None):
"""
Returns a random GNR (growing network with redirection) digraph
with n vertices and redirection probability p.
The digraph is constructed by adding vertices with a link to one
previously added vertex. The vertex to link to is chosen uniformly.
With probability p, the arc is instead redirected to the successor
vertex. The digraph is always a tree.
INPUT:
- ``n`` - number of vertices.
- ``p`` - redirection probability
- ``seed`` - for the random number generator.
EXAMPLE::
sage: D = digraphs.RandomDirectedGNR(25, .2)
sage: D.edges(labels=False)
[(1, 0), (2, 0), (2, 1), (3, 0), (4, 0), (4, 1), (5, 0), (5, 1), (5, 2), (6, 0), (6, 1), (7, 0), (7, 1), (7, 4), (8, 0), (9, 0), (9, 8), (10, 0), (10, 1), (10, 2), (10, 5), (11, 0), (11, 8), (11, 9), (12, 0), (12, 8), (12, 9), (13, 0), (13, 1), (14, 0), (14, 8), (14, 9), (14, 12), (15, 0), (15, 8), (15, 9), (15, 12), (16, 0), (16, 1), (16, 4), (16, 7), (17, 0), (17, 8), (17, 9), (17, 12), (18, 0), (18, 8), (19, 0), (19, 1), (19, 4), (19, 7), (20, 0), (20, 1), (20, 4), (20, 7), (20, 16), (21, 0), (21, 8), (22, 0), (22, 1), (22, 4), (22, 7), (22, 19), (23, 0), (23, 8), (23, 9), (23, 12), (23, 14), (24, 0), (24, 8), (24, 9), (24, 12), (24, 15)]
sage: D.show() # long time
REFERENCE:
- [1] Krapivsky, P.L. and Redner, S. Organization of Growing
Random Networks, Phys. Rev. E vol. 63 (2001), p. 066123.
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
return DiGraph(networkx.gnc_graph(n, seed=seed))
示例9: RandomShell
def RandomShell(constructor, seed=None):
"""
Returns a random shell graph for the constructor given.
INPUT:
- ``constructor`` - a list of 3-tuples (n,m,d), each
representing a shell
- ``n`` - the number of vertices in the shell
- ``m`` - the number of edges in the shell
- ``d`` - the ratio of inter (next) shell edges to
intra shell edges
- ``seed`` - for the random number generator
EXAMPLE::
sage: G = graphs.RandomShell([(10,20,0.8),(20,40,0.8)])
sage: G.edges(labels=False)
[(0, 3), (0, 7), (0, 8), (1, 2), (1, 5), (1, 8), (1, 9), (3, 6), (3, 11), (4, 6), (4, 7), (4, 8), (4, 21), (5, 8), (5, 9), (6, 9), (6, 10), (7, 8), (7, 9), (8, 18), (10, 11), (10, 13), (10, 19), (10, 22), (10, 26), (11, 18), (11, 26), (11, 28), (12, 13), (12, 14), (12, 28), (12, 29), (13, 16), (13, 21), (13, 29), (14, 18), (16, 20), (17, 18), (17, 26), (17, 28), (18, 19), (18, 22), (18, 27), (18, 28), (19, 23), (19, 25), (19, 28), (20, 22), (24, 26), (24, 27), (25, 27), (25, 29)]
sage: G.show() # long time
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
return Graph(networkx.random_shell_graph(constructor, seed=seed))
示例10: RandomHolmeKim
def RandomHolmeKim(n, m, p, seed=None):
"""
Returns a random graph generated by the Holme and Kim algorithm for
graphs with power law degree distribution and approximate average
clustering.
INPUT:
- ``n`` - number of vertices.
- ``m`` - number of random edges to add for each new
node.
- ``p`` - probability of adding a triangle after
adding a random edge.
- ``seed`` - for the random number generator.
From the NetworkX documentation: The average clustering has a hard
time getting above a certain cutoff that depends on m. This cutoff
is often quite low. Note that the transitivity (fraction of
triangles to possible triangles) seems to go down with network
size. It is essentially the Barabasi-Albert growth model with an
extra step that each random edge is followed by a chance of making
an edge to one of its neighbors too (and thus a triangle). This
algorithm improves on B-A in the sense that it enables a higher
average clustering to be attained if desired. It seems possible to
have a disconnected graph with this algorithm since the initial m
nodes may not be all linked to a new node on the first iteration
like the BA model.
EXAMPLE: We show the edge list of a random graph on 8 nodes with 2
random edges per node and a probability `p = 0.5` of
forming triangles.
::
sage: graphs.RandomHolmeKim(8, 2, 0.5).edges(labels=False)
[(0, 2), (0, 5), (1, 2), (1, 3), (2, 3), (2, 4), (2, 6), (2, 7),
(3, 4), (3, 6), (3, 7), (4, 5)]
::
sage: G = graphs.RandomHolmeKim(12, 3, .3)
sage: G.show() # long time
REFERENCE:
- [1] Holme, P. and Kim, B.J. Growing scale-free networks with
tunable clustering, Phys. Rev. E (2002). vol 65, no 2,
026107.
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
return graph.Graph(networkx.powerlaw_cluster_graph(n, m, p, seed=seed))
示例11: _cftp
def _cftp(self, start_row):
"""
Implement coupling from the past.
ALGORITHM:
The set of Gelfand-Tsetlin patterns can partially ordered by
elementwise domination. The partial order has unique maximum
and minimum elements that are computed by the methods
:meth:`_cftp_upper` and :meth:`_cftp_lower`. We then run the Markov
chain that randomly toggles each element up or down from the
past until the state reached from the upper and lower start
points coalesce as described in [Propp1997]_.
EXAMPLES::
sage: G = GelfandTsetlinPatterns(3, 5)
sage: G._cftp(0) # random
[[5, 3, 2], [4, 2], [3]]
sage: G._cftp(0) in G
True
"""
from sage.misc.randstate import current_randstate
from sage.misc.randstate import seed
from sage.misc.randstate import random
count = self._n * self._k
seedlist = [(current_randstate().long_seed(), count)]
upper = []
lower = []
while True:
upper = self._cftp_upper()
lower = self._cftp_lower()
for currseed, count in seedlist:
with seed(currseed):
for _ in range(count):
for row in range(start_row, self._n):
for col in range(self._n - row):
direction = random() % 2
self._toggle_markov_chain(upper, row, col, direction)
self._toggle_markov_chain(lower, row, col, direction)
if all(all(x == y for x,y in zip(l1, l2)) for l1, l2 in zip(upper, lower)):
break
count = seedlist[0][1] * 2
seedlist.insert(0, (current_randstate().long_seed(), count))
return GelfandTsetlinPattern(upper)
示例12: RandomGNM
def RandomGNM(n, m, dense=False, seed=None):
"""
Returns a graph randomly picked out of all graphs on n vertices
with m edges.
INPUT:
- ``n`` - number of vertices.
- ``m`` - number of edges.
- ``dense`` - whether to use NetworkX's
dense_gnm_random_graph or gnm_random_graph
EXAMPLES: We show the edge list of a random graph on 5 nodes with
10 edges.
::
sage: graphs.RandomGNM(5, 10).edges(labels=False)
[(0, 1), (0, 2), (0, 3), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
We plot a random graph on 12 nodes with m = 12.
::
sage: gnm = graphs.RandomGNM(12, 12)
sage: gnm.show() # long time
We view many random graphs using a graphics array::
sage: g = []
sage: j = []
sage: for i in range(9):
... k = graphs.RandomGNM(i+3, i^2-i)
... g.append(k)
...
sage: for i in range(3):
... n = []
... for m in range(3):
... n.append(g[3*i + m].plot(vertex_size=50, vertex_labels=False))
... j.append(n)
...
sage: G = sage.plot.graphics.GraphicsArray(j)
sage: G.show() # long time
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
if dense:
return graph.Graph(networkx.dense_gnm_random_graph(n, m, seed=seed))
else:
return graph.Graph(networkx.gnm_random_graph(n, m, seed=seed))
示例13: RandomBarabasiAlbert
def RandomBarabasiAlbert(n, m, seed=None):
u"""
Return a random graph created using the Barabasi-Albert preferential
attachment model.
A graph with m vertices and no edges is initialized, and a graph of n
vertices is grown by attaching new vertices each with m edges that are
attached to existing vertices, preferentially with high degree.
INPUT:
- ``n`` - number of vertices in the graph
- ``m`` - number of edges to attach from each new node
- ``seed`` - for random number generator
EXAMPLES:
We show the edge list of a random graph on 6 nodes with m = 2.
::
sage: graphs.RandomBarabasiAlbert(6,2).edges(labels=False)
[(0, 2), (0, 3), (0, 4), (1, 2), (2, 3), (2, 4), (2, 5), (3, 5)]
We plot a random graph on 12 nodes with m = 3.
::
sage: ba = graphs.RandomBarabasiAlbert(12,3)
sage: ba.show() # long time
We view many random graphs using a graphics array::
sage: g = []
sage: j = []
sage: for i in range(1,10):
... k = graphs.RandomBarabasiAlbert(i+3, 3)
... g.append(k)
...
sage: for i in range(3):
... n = []
... for m in range(3):
... n.append(g[3*i + m].plot(vertex_size=50, vertex_labels=False))
... j.append(n)
...
sage: G = sage.plot.graphics.GraphicsArray(j)
sage: G.show() # long time
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
return graph.Graph(networkx.barabasi_albert_graph(n, m, seed=seed))
示例14: irreducible_characters
def irreducible_characters(self):
"""
Returns the list of irreducible characters of the group.
EXAMPLES::
sage: G = GL(2,2)
sage: G.irreducible_characters()
[Character of General Linear Group of degree 2 over Finite Field of size 2,
Character of General Linear Group of degree 2 over Finite Field of size 2,
Character of General Linear Group of degree 2 over Finite Field of size 2]
"""
current_randstate().set_seed_gap()
Irr = self._gap_().Irr()
L = []
for irr in Irr:
L.append(ClassFunction(self,irr))
return L
示例15: RandomRegular
def RandomRegular(d, n, seed=None):
"""
Returns a random d-regular graph on n vertices, or returns False on
failure.
Since every edge is incident to two vertices, n\*d must be even.
INPUT:
- ``n`` - number of vertices
- ``d`` - degree
- ``seed`` - for the random number generator
EXAMPLE: We show the edge list of a random graph with 8 nodes each
of degree 3.
::
sage: graphs.RandomRegular(3, 8).edges(labels=False)
[(0, 1), (0, 4), (0, 7), (1, 5), (1, 7), (2, 3), (2, 5), (2, 6), (3, 4), (3, 6), (4, 5), (6, 7)]
::
sage: G = graphs.RandomRegular(3, 20)
sage: if G:
... G.show() # random output, long time
REFERENCES:
- [1] Kim, Jeong Han and Vu, Van H. Generating random regular
graphs. Proc. 35th ACM Symp. on Thy. of Comp. 2003, pp
213-222. ACM Press, San Diego, CA, USA.
http://doi.acm.org/10.1145/780542.780576
- [2] Steger, A. and Wormald, N. Generating random regular
graphs quickly. Prob. and Comp. 8 (1999), pp 377-396.
"""
if seed is None:
seed = current_randstate().long_seed()
import networkx
try:
N = networkx.random_regular_graph(d, n, seed=seed)
if N is False:
return False
return graph.Graph(N, sparse=True)
except StandardError:
return False