Python Z3py,随机不同解生成

Python Z3py,随机不同解生成,python,z3,z3py,Python,Z3,Z3py,结果似乎只是随机的一秒钟。。。然后它开始给出连续的数字 from z3 import * import random a = Int('a') b = Int('b') s = Tactic('qflra').solver() s.add(a > 10) set_option('smt.arith.random_initial_value', True) set_option('smt.random_seed', random.randint(0, 2 ** 8)) while s.c

结果似乎只是随机的一秒钟。。。然后它开始给出连续的数字

from z3 import *
import random
a = Int('a')
b = Int('b')

s = Tactic('qflra').solver()
s.add(a > 10)
set_option('smt.arith.random_initial_value', True)
set_option('smt.random_seed', random.randint(0, 2 ** 8))

while s.check() == sat:
    m = s.model()
    print m[a]
    s.add(a != m[a])
    set_option('smt.random_seed', random.randint(0, 2 ** 8))

我怎样才能使它更随机?至少,不是连续数字的列表。我的最佳目标是拥有一个在解决方案空间中均匀分布的解决方案列表

我认为你把随机化与抽样混为一谈了。正如@JohanC所指出的,您通常修复一个随机种子,以便在SMT中跨多个运行获得一致的结果。仅仅因为你改变了种子,并不意味着你会得到不同的结果。与设置一些随机数相比,采样是一个完全不同的问题(而且困难得多)。否则,你所做的是正确的;要查找所有可设置的选项,请运行
z3-p>options.txt
并在
options.txt
中查找关键字seed和random。

可能会有所帮助。通常,随机种子用于确保结果可预测,而不是获得均匀分布的解。
4294966399
4294966398
4294966397
4294966396
4294966395
4294966394
4294966393
11
12
13
14
4294966400
15
16
17
18
19