我想用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}]]
我能绕过这个问题吗?发生了什么?
发布于 2012-02-05 08:15:36
这里的评估顺序不是您想要的:
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
避免了左手边过早地求值。
发布于 2012-02-05 08:17:50
这会产生错误的原因是因为x
没有值,而Length[x]
返回零。你需要做的是定义x:
x=Flatten[Table[a 2 + b, {a, 6}, {b, 6}]];
Count[x, 8]/Length[x]
https://stackoverflow.com/questions/9145717
复制相似问题