我想用 wolframalpha 求一条线 y = a x + b
通过 point [2,8]
的概率,当 a
和 b
由公平掷骰决定。
这就是我想要的:
Count[Flatten[Table[a 2 + b, {a,6},{b,6}]],8]/
Length[Flatten[Table[a 2 + b, {a,6},{b,6}]]]
,但我不喜欢重复。我不完全确定为什么以下不起作用:
Count[x, 8]/Length[x] /. x -> Flatten[Table[a 2 + b, {a, 6}, {b, 6}]]
我可以解决这个问题吗?发生了什么?
最佳答案
这里的求值顺序不是你想要的:
Count[x, 8]/Length[x] /. x -> Flatten[Table[a 2 + b, {a, 6}, {b, 6}]]
/.
的左侧在替换前求值,因此变为:Indeterminate
您需要延迟评估。通常的方法是使用“纯函数”。参见 Function &和 Slot # :
Count[#, 8]/Length[#] & @ Flatten[Table[a 2 + b, {a, 6}, {b, 6}]]
可以强制 ReplaceAll(缩写 /.
)工作,但它是非标准的:
Unevaluated[ Count[x, 8]/Length[x] ] /.
x -> Flatten[Table[a 2 + b, {a, 6}, {b, 6}]]
Unevaluted
此处可防止左侧过早求值。
关于wolfram-mathematica - 为什么这个表达式替换不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9145717/