我希望使用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}]]
我可以解决这个问题以及发生了什么吗?
答案 0 :(得分:4)
此评估的顺序不是您想要的:
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
这里让左手边过早地评估。
答案 1 :(得分:3)
产生错误的原因是x
没有值,Length[x]
返回零。你需要做的是定义x:
x=Flatten[Table[a 2 + b, {a, 6}, {b, 6}]];
Count[x, 8]/Length[x]