我正在做一个粒子在晶格中运动的随机行走模拟。因此,我必须创建大量的随机数,大约10^12及以上。目前,我正在使用C 11提供的可能性
问题是:我能做些什么来减少生成这些数字所需的CPU时间,以及对它们的质量有什么影响?
如您所见,我尝试了不同的引擎,但这对CPU时间没有太大影响。此外,我的uniform01(gen)和generate\u canonical之间有什么区别
编辑:通过阅读答案,我得出结论,我的问题没有理想的解决方案。因此,我决定首先让我的程序具有多线程功能,并在不同的线程中运行多个RNG(使用一个随机的\u设备号作为线程的单个增量进行播种)。目前,这种接缝是最不可避免的步骤(无论如何都需要多线程)。作为下一步,根据具体要求,我考虑切换到建议的Intel RNG或推力。这意味着我的RNG实现不应该太复杂,而目前情况并非如此。但现在我喜欢关注模型的物理正确性,而不是编程方面的东西,只要程序的输出在物理上是正确的,就会出现这种情况。有关Intel RNG的推力
以下是我目前所做的:
class Generator {
public:
Generator();
virtual ~Generator();
double rand01(); //random number [0,1)
int binomial(int n, double p); //binomial distribution with n samples with probability p
private:
std::random_device randev; //seed
/*Engines*/
std::mt19937_64 gen;
//std::mt19937 gen;
//std::default_random_engine gen;
/*Distributions*/
std::uniform_real_distribution<double> uniform01;
std::binomial_distribution<> binomialdist;
};
Generator::Generator() : randev(), gen(randev()), uniform01(0.,1.), binomial(1,1.) {
}
Generator::~Generator() { }
double Generator::rand01() {
//return uniform01(gen);
return generate_canonical<double,numeric_limits<double>::digits>(gen);
}
int Generator::binomialdist(int n, double p) {
binomial.param(binomial_distribution<>::param_type(n,p));
return binomial(gen);
}
也许可以使用GPU来同时生成多个数字,而不是使用CPU?
基于CUDA的高效随机数生成及应用
如果你需要大量的随机数,我的意思是大量的,请在互联网上仔细搜索IBM的浮点随机数生成器,它可能是十年前发布的。你必须买一台PowerPC机器,或者买一台新的带fused multiply add的Intel机器。他们以每个核心每周期一个的速率获得随机数。所以,如果你买了一台新的Mac Pro,你可能会达到每秒500亿个随机数。
您可以预先处理随机数,并在需要时使用它们。
如果您需要真正的随机数,我建议您使用以下服务http://www.random.org/这确保了由环境环境计算的随机数,而不是某些算法。
说到随机数,你还必须检查一下:
这是我的代码: null null 因此,一般来说,我想生成一个随机数量的divs和随机的位置。 不幸的是,这篇或这篇文章对我没有帮助。太具体了。 我会非常感谢你的帮助!
我试图生成一个具有以下特征的整数随机向量: 我想在每个区间生成不同数量的值,每个区间必须只有唯一的值。我以为是randperm,但我不能定义最小和最大间隔,例如V1 V2,我会得到下面的向量,其中
我正在尝试提高从BufferedImage生成的图像的质量。最终目标是输入JPEG(此处从计算机上的文件中检索),转换为灰度TIFF,然后输出为字节数组。我包含了将最终图像保存到PC的代码,以便更容易识别问题。 目前的问题是,最终的图像质量较低——放大显示构成图片的像素之间有大量空白。我的理解是,这可能是由于使用了抖动算法(Floyd Steinberg),因此从技术上讲,图像不会以灰度再现。 我
对于投票、调查类的表单,往往会遇到随意填写或刷票的数据,这些数据不仅浪费提交量,也影响分析结果。从技术上讲,刷票不能完全避免,但可以提升刷票成本,从而降低刷票几率。 限制填写权限 开启方法:表单「设置」——「数据收集」上部,如图 1 所示: 图1 表单填写限制 图中的设置有如下效果: 所有人可填 杀伤力:★ 这是默认设置,打开表单的任何人都能够任意次数地提交数据。 仅金数据用户可填 杀伤力:★★★
我在plotly中绘制的每个图形在我保存它的那一刻之前都看起来很棒,所以图像看起来有点粗糙,如果它有意义的话,只是质量很差。有人知道如何以高质量保存它吗?您可以使用此基本图表作为示例。 非常感谢。
我想创建一个密码生成器,根据用户设置的限制创建密码。限制是: 最小密码长度 最大密码长度 最小字母和数字 最小字母 最小大写字母 最小小写字母 最小数字 最大重复字符数 我通过谷歌观察,大多数示例代码不符合我需要的要求。所以我即兴创作了这样的代码: 我遇到的问题是如何确保满足最低条件。同时,我不希望我的密码通过重复相同类型的字符来生成。 > 示例:如果我将最大密码长度设置为 10,并且我想要的最小