2
import networkx as nx
import numpy as np
import random
from networkx.utils import powerlaw_sequence


W=powerlaw_sequence(100,exponent=2.5)

random.choice(W)

如果我希望这个序列的数字是除零以外的任何数字怎么办?或特定范围内的任何数字?使最小值为 1,例如。甚至在从序列中选择随机数时分配此条件。

powerlaw_sequence(100,exponent=2.0,range(1,20)) 和 powerlaw_sequence(100,exponent=2.0,xmin=1) 都不起作用。谢谢

4

2 回答 2

3

我不知道numpy,所以也许还有另一种可能的解决方案,但以下应该可行:

W = [x for x in powerlaw_sequence(100,exponent=2.5) if x != 0]

但是,这会减少W由于条件而被过滤掉的元素的数量x != 0

于 2012-01-26T10:23:12.310 回答
1

也许您正在寻找 Zipf 序列?

In [1]: import networkx as nx

In [2]: nx.utils.zipf_sequence(10,alpha=2.5)
Out[2]: [1, 1, 1, 2, 1, 2, 1, 1, 1, 8]

http://networkx.lanl.gov/reference/generated/networkx.utils.random_sequence.zipf_sequence.html#networkx.utils.random_sequence.zipf_sequence

于 2012-01-26T14:35:10.150 回答