小编Mar*_*som的帖子

在MS SQL Server 2005中使用RAND()时我做错了什么?

我正试图从一张小桌子中随机抽取10%的样本.我以为我只是使用RAND()函数并选择随机数小于0.10的那些行:

SELECT * FROM SomeTable
WHERE SomeColumn='SomeCondition' AND
      RAND() < 0.10
Run Code Online (Sandbox Code Playgroud)

但我很快发现RAND()总是返回相同的数字!让我想起这个xkcd卡通片.

没问题,RAND函数采用种子值.我将定期运行此查询,如果我在不同的日子运行它,我希望它给出不同的结果,所以我使用日期和唯一行ID的组合来播种它:

SELECT * FROM SomeTable
WHERE SomeColumn='SomeCondition' AND
      RAND(CAST(GETDATE) AS INTEGER) + RowID) < 0.10
Run Code Online (Sandbox Code Playgroud)

我还是没有得到任何结果!当我显示RAND返回的随机数时,我发现它们都在一个狭窄的范围内.从RAND获取随机数似乎需要您使用随机种子.如果我首先有一个随机种子,我就不需要随机数!

我已经看到之前有关此问题的讨论:

SQL Server随机排序
如何在SQL中请求随机行?

他们没帮我.TABLESAMPLE在页面级别工作,这适用于大表,但不适用于小表,并且看起来它适用于WHERE子句之前.TOP with NEWID不起作用,因为我不知道我想要多少行.

任何人都有解决方案,或者至少有一个提示?

编辑:感谢AlexCuse提供适用于我的特定案例的解决方案.现在更大的问题,如何使兰德表现?

sql sql-server random

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

特定于gcc 4.5的C++数组创建问题

以下代码适用于gcc版本2.9到4.4,但不适用于版本4.5:

 struct Pass {
 };

 int main(void){
 Pass **passes = new ( Pass (*[ 10 ]) );
 }
Run Code Online (Sandbox Code Playgroud)

gcc 4.5的具体错误消息是:

prob.cc: In function ‘int main()’:
prob.cc:6:31: warning: lambda expressions only available with -std=c++0x or -std=gnu++0x
prob.cc:6:38: error: no matching function for call to ‘Pass::Pass(void (&)())’
prob.cc:2:1: note: candidates are: Pass::Pass()
prob.cc:2:1: note:                 Pass::Pass(const Pass&)
Run Code Online (Sandbox Code Playgroud)

添加请求的标志会使初始警告无效,但不能解决问题.有人可以解释如何解决这个问题吗?这是我正在维护的一些不起眼的C++代码,我只知道有限数量的C++.

c++ gcc new-operator c++11

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

如何在Visual C++中使用UTF8Encoding

我需要将下面的c#代码更改为c ++代码.

    public static byte[] StrToByteArray(string str)
    {
        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
        return encoding.GetBytes(str);
    }
Run Code Online (Sandbox Code Playgroud)

这个网站上,我找到了UTF8Encoding的c ++代码,我从中创建了这段代码

    void StrToByteArray(string unicodeString)
    {
        UTF8Encoding^ utf8 = gcnew UTF8Encoding;
        array<Byte>^encodedBytes = utf8->GetBytes( unicodeString );
    }
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误

错误2错误C2664:'cli :: array ^ System :: Text :: Encoding :: GetBytes(cli :: array ^)':无法将参数1从'std :: string'转换为'cli :: array

为什么它会在与文档相同的情况下执行此操作?(除了我使用普通字符串,但使用顶级字符串^给我一个错误.)

我不确定它是否相关但我的代码是管理的.

注意:我还没有担心返回任何数据,直到我得到这个工作.

c++ managed-c++ utf-8 visual-studio-2010

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

为什么多次继承具有不同签名的方法不明确?

如果我继承了具有相同名称但来自不同基类的不同签名的函数,则尝试调用该函数会生成错误,声称该调用不明确.单个基类中的相同函数不会生成错误.为什么是这样?

第一个案例,http://ideone.com/calH4Q

#include <iostream>
using namespace std;

struct Base1
{
    void Foo(double param)
    {
        cout << "Base1::Foo(double)" << endl;
    }
};

struct Base2
{
    void Foo(int param)
    {
        cout << "Base2::Foo(int)" << endl;
    }
};

struct Derived : public Base1, public Base2
{
};

int main(int argc, char **argv)
{
    Derived d;
    d.Foo(1.2);
    return 1;
}

prog.cpp: In function ‘int main(int, char**)’:
prog.cpp:27:7: error: request for member ‘Foo’ is ambiguous
prog.cpp:14:10: error: candidates are: void Base2::Foo(int)
prog.cpp:6:10: error:                 void …
Run Code Online (Sandbox Code Playgroud)

c++ multiple-inheritance ambiguous

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

std :: equal_to是否保证默认调用operator ==?

我一直认为标准需要非专业模板std::equal_to<T>才能调用T::operator==,但我注意到cppreference.com上描述几乎意味着它是另一种方式; 当然它没有提到它作为一项要求.我还检查了C++ 11草案标准N3337,但也找不到任何保证.

如果您创建一个类,operator==您希望它可以在所有情况下使用.

我不能老实地想到一种实现方式不会这样做std::equal_to,但我错过了什么?

c++ std comparison-operators

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

你如何在Python中进行二维(x,y)索引?

通常,如果您有二维数据结构,它是两个容器的组合 - 列表列表或字典字典.如果您想制作单个集合但是在二维中工作,该怎么办?

代替:

collection[y][x]
Run Code Online (Sandbox Code Playgroud)

做:

collection[x,y]
Run Code Online (Sandbox Code Playgroud)

我知道这是可能的,因为该PIL Image.load函数返回一个以这种方式工作的对象.

python indexing multidimensional-array

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

os.walk是否利用操作系统返回的文件类型来提高效率?

os.walk函数返回目录和文件的单独列表.许多常见操作系统(如Windows和Linux)上的底层OS调用返回一个文件类型或标志,指定每个目录条目是文件还是目录; 如果没有此标志,则必须再次为每个返回的文件名查询操作系统.代码是否os.walk利用这些信息或将其丢弃os.listdir

python directory optimization

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

在PNG中编码二进制数据?

我正在寻找有关如何通过颜色将少量二进制数据(例如,大约200字节)编码到PNG中的信息; 本质上是Hid.im.torrent文件做的事情.任何有关最佳实践的信息或跳板都将是出色的.

谢谢!

python encoding png steganography python-imaging-library

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

sizeof(unsigned char)也保证为1吗?

我认为标题是不言自明的,但更好的格式.

难道sizeof(unsigned char)还保证是1?


我不相信这个问题是重复的,因为:

  • C与C++(标签摘录:)不同...It was originally designed as an extension to C, and keeps a similar syntax, but is now a completely different language....
  • char可以是签名或未签名.除非你得到标准的保证,否则没有理由假设sizeof(unsigned char)== sizeof(char)因此问题.
  • 即使您将C与C++混淆,答案也不会重叠.

c++ sizeof

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