3

我想使用 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}]]

我可以解决这个问题吗?发生了什么?

4

2 回答 2

4

此处的评估顺序不是您想要的:

Count[x, 8]/Length[x] /. x -> Flatten[Table[a 2 + b, {a, 6}, {b, 6}]]

的左侧/.在替换之前进行评估,因此变为:Indeterminate

您需要延迟评估。正常的方法是使用“纯函数”。请参阅功能 &插槽 #

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-05T00:15:35.743 回答
3

这产生错误的原因是因为x没有值并Length[x]返回零。您需要做的是定义 x:

x=Flatten[Table[a 2 + b, {a, 6}, {b, 6}]];
Count[x, 8]/Length[x] 
于 2012-02-05T00:17:49.667 回答