小编Grz*_*nio的帖子

Java中的健壮地图<Double,sth>

我正在寻找一个强大的Java映射,其中键查找将考虑到Double具有有限的精度(大约1e-15或1e-16).我在哪里可以找到这样的东西?

编辑:根据Jon的建议,我认为定义等价是有意义的.一种想法是将这些数字中心舍入到15个最相关的十进制数字.其他数字将四舍五入(以任何一致的方式 - 实施最快).这有意义吗?什么是最好的实施?

java collections

2
推荐指数
1
解决办法
113
查看次数

如何在F#(或一般的.Net)中生成标准的正常随机变量?

我需要标准的普通(高斯)随机变量进行模拟.生成它们的最简单方法是什么?与java不同,标准的Random类似乎只适用于统一变量.

.net random f# gaussian

2
推荐指数
1
解决办法
731
查看次数

在F#中获取2D数组的列或行

如何在F#中保存2D数组的列或行(理想情况下是1D数组,但Seq也很好).显然我可以自己写,但你会认为它必须已经提供...

例如,我在内置等效于:

let row i array = seq { for j in 0 .. (Array2D.length2 array)-1 do yield array.[i,j]}
Run Code Online (Sandbox Code Playgroud)

arrays f# multidimensional-array

2
推荐指数
1
解决办法
1237
查看次数

从'System.Collections.Generic.IList <double>'到'System.Collections.IList'没有隐式引用转换

我正在尝试构建一个方法来检查列表是否为空:

    public static T1 NotEmpty<T1>(T1 argument, string message = null) where T1 : class, IEnumerable
    {
        if (argument == null)
        {
            throw new ArgumentNullException(message);
        }
        if(!argument.Any())
        {
            throw new ArgumentException(message);
        }
        return argument;
    }
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

public void MyMethod(IList<double> stuff)
{
    _stuff = NotEmpty(stuff);
    ....
}
Run Code Online (Sandbox Code Playgroud)

但它没有编译.扩展方法Any()似乎只在通用版本上定义IEnumerable.然而,我无法定义NotEmpty,使得一般的参数实现的通用版本方法IEnumerable编译器能够自动计算出该类型.我想要的最后一件事是手动输入所有类型.

是否有可能以比下面给出的更优雅的方式实现它?

    public static T1 NotEmpty<T1>(T1 argument, string message = null) where T1 : class, IEnumerable
    {
        if (argument == null)
        {
            throw new ArgumentNullException(message); …
Run Code Online (Sandbox Code Playgroud)

.net c# generics

2
推荐指数
2
解决办法
340
查看次数

在Visual Studio 2008中将项目更改为Web应用程序

在VS 2008的解决方案我刚刚继承有一个正常的类库项目,实际上应该是一个Web应用程序项目(因为它是一个Web服务确实).转换它的最佳方法是什么?

.net c# visual-studio-2008

1
推荐指数
1
解决办法
658
查看次数

PInvoke CreateDesktop

我试图通过传递标志来通过子进程继承桌面的PInvoke CreateDesktop.声明如下:

[DllImport("user32", EntryPoint = "CreateDesktopW", CharSet = CharSet.Unicode, SetLastError = true)]
        public static extern IntPtr CreateDesktop(string lpszDesktop, IntPtr lpszDevice, IntPtr pDevmode, int dwFlags,
                                                  int dwDesiredAccess, [MarshalAs(UnmanagedType.LPStruct)] SECURITY_ATTRIBUTES lpsa);

        [StructLayout(LayoutKind.Sequential)]
        public struct SECURITY_ATTRIBUTES
        {
            public int nLength;
            public IntPtr lpSecurityDescriptor;
            public int bInheritHandle;
        }
Run Code Online (Sandbox Code Playgroud)

我用它如下:

Win32.SECURITY_ATTRIBUTES sa = new Win32.SECURITY_ATTRIBUTES();
            sa.nLength = Marshal.SizeOf(sa);
            sa.bInheritHandle = 1;
            testDesktopHandle = Win32.CreateDesktop(name, IntPtr.Zero, IntPtr.Zero, 0, Win32.GENERIC_ALL, sa);
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用,我收到以下错误:

System.Runtime.InteropServices.MarshalDirectiveException: Cannot marshal 'parameter #6': Invalid managed/unmanaged type combination (this value type must be paired …
Run Code Online (Sandbox Code Playgroud)

.net c# pinvoke interop

1
推荐指数
1
解决办法
3268
查看次数

用C++连接字符串

我是一个相当缺乏经验的C++程序员,所以这个问题可能很基础.我想获取我的copula的文件名:

string MonteCarloBasketDistribution::fileName(char c)
{
    char result[100];
    sprintf(result, "%c_%s(%s, %s).csv", copula.toString().c_str(), left.toString().c_str(), right.toString().c_str());
    return string(result);
}
Run Code Online (Sandbox Code Playgroud)

用于:

MonteCarloBasketDistribution::MonteCarloBasketDistribution(Copula &c, Distribution &l, Distribution &r): copula(c), left(l), right(r)
{
    //.....
    ofstream funit;
    funit.open (fileName('u').c_str());

    ofstream freal;
    freal.open (fileName('r').c_str());
}
Run Code Online (Sandbox Code Playgroud)

但是,创建的文件具有垃圾名称,主要由奇怪的字符组成.知道我做错了什么以及如何解决它?

c++ linux g++

1
推荐指数
3
解决办法
554
查看次数

获取Oracle数据库名称

如何以编程方式获取我要连接的Oracle数据库的名称?我试过了:

using (OracleConnection connection = new OracleConnection(oraConnectStr))
            {
                connection.Open();
                return connection.Database;
            }
Run Code Online (Sandbox Code Playgroud)

但它返回空字符串.我不能使用整个连接字符串,因为它可能包含用户名/密码.

c# oracle

1
推荐指数
1
解决办法
1567
查看次数

执行外部命令并等待它在Linux下完成

简单的问题:从C++(使用g ++和Linux)执行外部程序(带参数)的最简单方法是什么?有没有更简单的方法,而不是做fork/exec和等待?我只需要执行命令并等待它完成.

c++ linux execute

1
推荐指数
1
解决办法
2690
查看次数

在Visual Studio中进行增强测试

我正在尝试在Visual Studio 2010中编译琐碎的单元测试项目.我有一个testrunner.cpp:

#define BOOST_TEST_DYN_LINK

#define BOOST_TEST_MODULE "BaumWelch Unit Tests"
#include <boost/test/unit_test.hpp>
Run Code Online (Sandbox Code Playgroud)

和exampletests.cpp

#include <boost/test/unit_test.hpp>

int add( int i, int j ) { return i+j; }

BOOST_AUTO_TEST_CASE( my_test )
{
  // seven ways to detect and report the same error:
  BOOST_CHECK( add( 2,2 ) == 4 );        // #1 continues on error
  BOOST_REQUIRE( add( 2,2 ) == 4 );      // #2 throws on error

  if( add( 2,2 ) != 4 )
     BOOST_ERROR( "Ouch..." );            // #3 continues on error

  if( …
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2010 boost-test

1
推荐指数
1
解决办法
2261
查看次数