有人可以解释我的节目的奇怪行为吗?
我创建了一个Web服务。它包含一种方法,该方法生成一组三维随机向量,其正坐标的总和等于1.为了生成这些向量,我使用来自here的类RandomNess
。我的代码如下:
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1
{
[OperationContract]
public void GenerateRandomVectors()
{
RandomNess.RandomNess rand = new RandomNess.RandomNess();
var vector = new List<double>();
for (int i = 0; i < 1000; i++)
{
//The first parameter of RandFixedSum is dimension of vector;
//The second parameter is a required sum of elements;
//The third and the fourth parameters are bounds for elements;
vector = rand.RandFixedSum(3, 1, 0, 1);
//Writing obtained vector to a file;
...
}
return;
}
}
我使用以下代码从Silverlight应用程序调用该服务:
ServiceReference1.Service1Client web;
web = new ServiceReference1.Service1Client();
web.GenerateRandomVectorsAsync();
当我将结果可视化时,我发现获得的点仅填充标准单纯形的一部分。因此,该方法给出了错误的结果(见图here)。
但是如果我直接从Silverlight应用程序(而不是从Web服务)或从Windows窗体应用程序调用方法RandFixedSum(...)
,我获得绝对正确的分布(点填充标准单纯形的所有表面)。< / p>
我的网络服务有什么问题?为什么会给出错误的结果?
答案 0 :(得分:0)
在调用web.GenerateRandomVectorsAsync()之前,您应该订阅web.GenerateRandomVectorsCompleted,然后开始解析由Web服务在事件处理程序中创建的数据文件。