草庐IT

伪随机码

全部标签

c++ - 从管道读取时的随机字符

在下面的代码中:...char*message="Thisisthemessage!";...printf("WritingtofiledescriptorFD[%i]\n",fd[1]);write(fd[1],message,strlen(message));printf("ReadingfromfiledescriptorFD[%i]\n",fd[0]);read(fd[0],buffer,strlen(message));printf("MessagefromFD[%i]:\"%s\".\n",fd[0],buffer);我得到以下输出:"Thisisthemessage!��

c++ - 在一系列值之间生成随机 double

我目前无法生成介于-32.768和32.768之间的随机数。它一直给我相同的值,但在小数字段中有一个小的变化。例如:27.xxx。这是我的代码,如有任何帮助,我们将不胜感激。#include#include#includeusingnamespacestd;intmain(){srand(time(NULL));doubler=(68.556*rand()/RAND_MAX-32.768);cout 最佳答案 我应该提一下,如果你使用的是C++11编译器,你可以使用类似这样的东西,它实际上更容易阅读,也更难搞砸:#include#i

c++ - 如何创建一个随机的 bit64 值

我在尝试生成随机无符号__int64值时遇到问题,有人有快速有效的方法来做这样的事情吗?下面是我正在做的,检查下面的代码。unsigned__int64m_RandomKey=0;while(m_RandomKey==0){m_RandomKey=(unsigned__int64)rand()生成未签名的__int64key的最佳方法是什么,以便在一段时间后甚至根本无法再次获得相同的key?它不必是唯一的,只要18,446,744,073,709,551,615分之一的概率不再重复即可! 最佳答案 如果您使用的是C++11,则可以使

c++ - 可以在运行时在不同的 Boost 伪随机数生成器之间进行选择吗?

我正在使用BoostRandom库为蒙特卡罗模拟生成随机数。为了检查我的结果,我希望能够为不同的运行使用不同的RNG引擎。理想情况下,我想使用命令行选项来确定在运行时使用哪个RNG,而不是例如在编译时通过typedef选择RNG。是否有一个基类T使得类似下面的事情成为可能;或者,如果不是,为什么不这样做的明显原因?#includeintmain(){unsignedcharrng_choice=0;T*rng_ptr;//base_classpointercanpointtoanyRNGfromboost::randomswitch(rng_choice){case0:rng_ptr=

c++ - 随机 double 总是无限的

我有以下内容:std::random_devicerd;std::mt19937_64randEng(rd());std::uniform_real_distributionrg(std::numeric_limits::lowest(),std::numeric_limits::max());for(size_ti=0;i其中nums是一个vector,预大小为numToGenerate尽管打印出的每个数字都显示inf,但我的理解是,我已将其设置为在这种情况下获取-1.79769e+308和1.79769e+308因为它恰好在我的机器上。我在这个随机数生成器的设置中做错了什么

c++ - CUDA 中的随机播放指令不起作用

我在CUDA5.0中遇到随机指令问题。这是我的内核片段。它在循环内。打印仅用于调试目的,因为我不能使用普通调试器:...tex_val=tex2D(srcTexRef,threadIdx.x+w,y_pos);if(threadIdx.x==0){left=left_value[y_pos];}else{printf("thread%d;shflvalue:%f\n",threadIdx.x,__shfl_up(value,1));left=__shfl_up(value,1);}printf("thread%d;value:%f;tex_val:%f;left:%f\n",threa

C++/快速随机访问在大文件中跳过

我有大文件,其中包含少量大数据集。每个数据集都包含一个名称和以字节为单位的数据集大小,允许跳过它并转到下一个数据集。我想快速建立数据集名称的索引。文件示例大约21MB,包含88个数据集。通过使用std::ifstream和seekg()在数据集之间跳过来快速读取88个名称大约需要1300毫秒,我想减少这一时间。所以实际上,我正在读取一个21MB文件中给定位置的88个大约30字节的block,这需要1300毫秒。有没有办法改进它,或者它是操作系统和文件系统的限制?我正在Windows764bit下运行测试。我知道在文件开头有一个完整的索引会更好,但是文件格式没有这个,我们不能改变它。

c++ - 为什么样本不是随机填充我的 vector ?

我正在试验一个玩具sample程序:mapfoo{{1,'a'},{2,'b'},{3,'c'}};vector>bar(size(foo));sample(begin(foo),end(foo),begin(bar),size(foo),mt19937{random_device{}()});LiveExample但是bar总是按顺序包含foo的内容。这是gcc实现问题,还是我只是一再倒霉? 最佳答案 std::sample从您传递的范围中选择元素。来自cppreference(强调我的):Selectsnelementsfrom

c++ - 二项分布的随机数

我需要从二项分布中快速生成大量随机数,以适应截然不同的试验规模(但是,大多数试验规模很小)。我希望不必手动编写算法代码(参见,例如,thisrelateddiscussionfromNovember),因为我是一名新手程序员,不喜欢重新发明轮子。看起来Boost没有为二项分布的变量提供生成器,但是TR1和GSL做。是否有充分的理由选择一个而不是另一个,还是我写一些适合我的情况的东西更好?我不知道这是否有意义,但我会在整个程序中交替使用均匀分布和二项分布生成数字,我希望它们共享相同的种子并尽量减少开销。对于我应该考虑的问题,我希望得到一些建议或示例。 最佳答案

c++ - 使用 Crypto++ 通过 SHA1 生成随机哈希

我需要使用Crypto++和SHA1生成随机散列。目前我有:#include#include#include...CryptoPP::SHA1sha1;stringsource="Hello";//Thiswillberandomlygeneratedsomehowstringhash="";StringSource(source,true,newHashFilter(sha1,newHexEncoder(newStringSink(hash))));当我来编译时,报如下错误:error:expectedtype-specifierbefore'HashFilter'error:exp