生成随机逻辑连接词
Generating Random Logical Connective
是否可以生成随机逻辑连接词,将它们放入变量中并用它们计算表达式的最大值?
提前致谢。
这是一种方法。创建一个规则,用随机布尔表达式替换表达式中的符号。递归地应用规则使表达式更深。请注意,maxapplydepth
设置为一个小数字以限制表达式的大小。
(%i102) maxapplydepth : 5 $
(%i103) matchdeclare (aa, symbolp) $
(%i104) defrule (r1, aa,
if random(1.0) < 0.5
then if random(1.0) < 0.33
then not aa
else if random(1.0) < 0.5
then aa and gensym ()
else aa or gensym ()
else aa) $
(%i105) apply1 (gensym (), r1);
(%o105) g20965
(%i106) apply1 (gensym (), r1);
(%o106) g20966 and (not g20967)
(%i107) apply1 (gensym (), r1);
(%o107) g20968 or g20970 or g20969
(%i108) apply1 (gensym (), r1);
(%o108) g20971
(%i109) apply1 (gensym (), r1);
(%o109) g20972
(%i110) apply1 (gensym (), r1);
(%o110) g20973 and g20974 and (g20975 or g20976)
(%i111) apply1 (gensym (), r1);
(%o111) (not g20977) and g20978 and g20979
(%i112) apply1 (gensym (), r1);
(%o112) g20980
(%i113) apply1 (gensym (), r1);
(%o113) g20981 and g20982
(%i114) apply1 (gensym (), r1);
(%o114) (g20983 and g20985 and (not g20987) and (g20986 or (not g20988)))
or ((((not g20984) and (not g20992)) or g20991) and (not g20990) and (not g20993))
or g20989 or g20994
您可以使用 listofvars
获取符号列表。
(%i115) listofvars (%);
(%o115) [g20983, g20985, g20987, g20986, g20988, g20984, g20992, g20991,
g20990, g20993, g20989, g20994]
您可以使用它为符号分配随机 true/false 值,然后计算整个表达式。
是否可以生成随机逻辑连接词,将它们放入变量中并用它们计算表达式的最大值?
提前致谢。
这是一种方法。创建一个规则,用随机布尔表达式替换表达式中的符号。递归地应用规则使表达式更深。请注意,maxapplydepth
设置为一个小数字以限制表达式的大小。
(%i102) maxapplydepth : 5 $
(%i103) matchdeclare (aa, symbolp) $
(%i104) defrule (r1, aa,
if random(1.0) < 0.5
then if random(1.0) < 0.33
then not aa
else if random(1.0) < 0.5
then aa and gensym ()
else aa or gensym ()
else aa) $
(%i105) apply1 (gensym (), r1);
(%o105) g20965
(%i106) apply1 (gensym (), r1);
(%o106) g20966 and (not g20967)
(%i107) apply1 (gensym (), r1);
(%o107) g20968 or g20970 or g20969
(%i108) apply1 (gensym (), r1);
(%o108) g20971
(%i109) apply1 (gensym (), r1);
(%o109) g20972
(%i110) apply1 (gensym (), r1);
(%o110) g20973 and g20974 and (g20975 or g20976)
(%i111) apply1 (gensym (), r1);
(%o111) (not g20977) and g20978 and g20979
(%i112) apply1 (gensym (), r1);
(%o112) g20980
(%i113) apply1 (gensym (), r1);
(%o113) g20981 and g20982
(%i114) apply1 (gensym (), r1);
(%o114) (g20983 and g20985 and (not g20987) and (g20986 or (not g20988)))
or ((((not g20984) and (not g20992)) or g20991) and (not g20990) and (not g20993))
or g20989 or g20994
您可以使用 listofvars
获取符号列表。
(%i115) listofvars (%);
(%o115) [g20983, g20985, g20987, g20986, g20988, g20984, g20992, g20991,
g20990, g20993, g20989, g20994]
您可以使用它为符号分配随机 true/false 值,然后计算整个表达式。