很抱歉,如果我的问题是基本的,但我在过去的15年里没有编码,尽管我正在努力学习为研究项目再次编码。我有一组12个对象[ABCDEFGHIJKL],我想为1到6之间的任何K创建任何可能的K-multiset列表。(我确实有一个选择概率列表,但在项目的这个阶段我可以假设所有人都有相同的选择概率。订单事项和重复是允许的(因此它们只是k元组)。例如:[A],[AA] [BAA] [ABA],[BAAAAA]等我尝试在weighted-n-of-with-repeats
的{{1}}扩展名中使用RND
,但似乎是订单并不重要,因此[BA]和[AB]是相同的,并报告为[AB]。你能帮忙解决NetLogo
代码吗?
这是我到目前为止所尝试过的,但不幸的是它无法识别顺序:
NetLogo
答案 0 :(得分:0)
请注意,每个包含K个项目的多个集合可以在12个数字系统中表示为整数值,其中A对应于0,B对应于1,依此类推,直到L = 11.
因此,您可以遍历范围0..12^K-1
中的所有整数(K = 6时约为3百万)并获取12位数字作为项目的索引。
较小项目列表和输出范围的python代码:
List = list('ABC')
L = len(List)
for K in range(1,4):
for i in range(L**K):
j = i
output = []
for n in range(K): #K digits
d = j % L #integer modulo for n-th digit
j = j // L #integer division
output.insert(0,List[d])
print(output)
part of output:
['A']
['B']
['C']
['A', 'A']
['A', 'B']
['A', 'C']
...
['C', 'C']
['A', 'A', 'A']
['A', 'A', 'B']
['A', 'A', 'C']
...
['C', 'B', 'C']
['C', 'C', 'A']
['C', 'C', 'B']
['C', 'C', 'C']