有人能解释一下我的程序的奇怪行为吗?
我已经创建了一个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 Forms应用程序调用方法RandFixedSum(...),我将获得绝对正确的分布(点填充了标准单形的所有表面)。
我的web服务出了什么问题?为什么它会给出错误的结果?
发布于 2014-08-11 19:27:22
您应该在调用web.GenerateRandomVectorsAsync()之前订阅web.GenerateRandomVectorsCompleted,并开始在事件处理程序中解析由web服务创建的数据文件。
https://stackoverflow.com/questions/25207779
复制相似问题