草庐IT

random_hash

全部标签

c++ - 与 std::hash 的意外冲突

我知道将无限数量的字符串散列到32bint中必然会产生冲突,但我希望散列函数能提供一些不错的分布。这两个字符串有相同的哈希值是不是很奇怪?size_thash0=std::hash()("generated_id_0");size_thash1=std::hash()("generated_id_1");//hash0==hash1我知道我可以使用boost::hash或其他人,但我想知道std::hash有什么问题.我用错了吗?我不应该以某种方式“播种”它吗? 最佳答案 您对std::hash的使用没有任何问题.问题是特化std:

c++ - 使用 c++11 的 <random> header ,获取 0 到 n 之间的整数的正确方法是什么?

我刚刚开始使用C++11的第一次上头,不过还是有些东西显得有些神秘。这个问题是关于完成一项非常简单的任务的预期、惯用的最佳实践方式。目前,在我的代码的一部分中,我有这样的内容:std::default_random_engineeng{std::random_device{}()};std::uniform_int_distributionrandom_up_to_A{0,A};std::uniform_int_distributionrandom_up_to_B{0,B};std::uniform_int_distributionrandom_up_to_some_other_con

c++ - 我应该使用 std::default_random_engine 还是应该使用 std::mt19937?

当我想使用std::random生成随机数时,我应该更喜欢哪个引擎?std::default_random_engine还是std::mt19937?有什么区别? 最佳答案 对于轻量级随机数(例如游戏),您当然可以考虑default_random_engine.但是,如果您的代码严重依赖于随机性的质量(例如模拟软件),则不应使用它,因为它只提供极简保证:Itisthelibraryimplemention'sselectionofageneratorthatprovidesatleastacceptableenginebehavio

c++ - rand() 和 random() 函数有什么区别?

有一次,我的老师教我使用randomize()和random()在C++Builder中生成伪随机数的函数。现在我更喜欢在VS2012中工作,但是当我尝试在那里使用这些函数时,它说“找不到标识符”,即使我添加了#include.经过一段时间的谷歌搜索,我发现还有rand()和srand()功能。它们之间有什么区别,哪个更好用? 最佳答案 randomize()和random()不是标准库的一部分。也许你的老师用这些名字写了函数供你在类里面使用,或者你的意思是random()和srandom()它们是POSIX的一部分,在Window

c++ - std::hash 可以用来散列函数指针吗?

C++11std::hash类型可以用来散列函数指针吗?有一个hash部分特化定义为templatestructhash;但由于函数指针与C++中的其他指针类型不同(例如,它们不能强制转换为void*),我不确定将它用于以下类型是否安全int(*)()或void(*)(int,int).这是允许的吗?新的ISO规范中是否有任何具体的措辞支持或反驳这一点?谢谢! 最佳答案 很好的问题。我不确定答案,我很乐意听从比我知识更好的人,但我的想法是,即使函数指针与数据指针不同,它们仍然是指针:所以std::hash应该应用部分特化。对于它的值

c++ - 如何为自定义类型扩展 std::tr1::hash?

如何让STL实现选择我的自定义类型?在MSVC上,有一个类std::tr1::hash,我可以通过使用来部分专门化它namespacestd{namespacetr1{templatestructhash{...};}}但这是推荐的方式吗?此外,这也适用于GCC的实现吗?对于boost::hash,提供一个免费的函数size_thash_value(constMyType&)就够了,TR1的实现有没有类似的东西? 最佳答案 我试图找出使用无序关联容器执行此操作的确切语法(也使用GCC,正如OP所要求的那样)并提出了这个问题。不幸的是

c++ - 我应该使用从 std::random_device 播种的随机引擎还是每次都使用 std::random_device

我有一个包含两个随机源的类。std::random_devicerd;std::mt19937random_engine;我通过调用std::random_device为std::mt19937播种。如果我想生成一个数字并且我不关心可重复性,我应该调用rd()还是random_engine()?在我的特定情况下,我确信两者都可以正常工作,因为这将在某些网络代码中调用,其中性能不是很重要,结果也不是特别敏感。但是,我对何时使用硬件熵以及何时使用伪随机数的一些“经验法则”感兴趣。目前,我只使用std::random_device来播种我的std::mt19937引擎,以及我的程序需要的任何

javascript - 比较用 PHP hash() 和 NodeJS crypto.createHash() 制作的 SHA256

我正在用NodeJS为我的网站制作一个实时应用程序,允许我的用户使用他们的帐户登录等。但是,我在部分日志记录方面遇到了一些问题。当我在主站点上注册/登录用户时,我使用PHP的hash()函数对他们的密码进行哈希处理,如下所示:$passwordSalt=mcrypt_create_iv(100);$hashed=hash("sha256",$password.$passwordSalt.$serverSalt);它在我的网站上效果很好但是我需要能够在NodeJS中从数据库中获取用户的salt,并能够对用户输入的密码进行哈希处理,将其与数据库的密码进行检查,并确保它们与用户登录匹配。我通

php - nodejs中的password_hash等价物

我面临需要验证通过nodejs服务器上的PHPpassword_hash方法创建的密码的情况。nodejs是否有与password_hash和password_verify等效的可用包?谢谢。 最佳答案 在我的例子中,我在php中创建了密码,如下所示$data['password']=password_hash($data['password'],PASSWORD_BCRYPT);如果我想在Node中验证密码而不是...varbcrypt=require('bcrypt');params.hash=params.hash.repla

javascript - stub Date.now() 和 Math.random()

我正在使用Mocha与Sinon对我的node.js模块进行单元测试。我已经成功地模拟了其他依赖项(我编写的其他模块),但我遇到了stub非纯函数(如Math.random()和Date.now())。我尝试了以下方法(已简化,以便这个问题没有那么本地化),但由于明显的范围问题,Math.random()没有被stub。Math的实例在测试文件和mymodule.js之间是独立的。test.jsvarsinon=require('sinon'),mymodule=require('./mymodule.js'),other=require('./other.js');describe(