- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想改变 rand_r 方法对 srand/rand 的使用或与其他带种子的随机生成器一起使用。
在代码中有一个循环调用带有种子的train方法。
int nseeds = 5;
for (int seed = 0; seed < nseeds; seed ++)
{
c.train(K, reps, gradientReps, improveReps, lambda, seed, SYMMETRICDIFF);
}
在 train 方法中,我想更改 3 个对 rand_r 的调用。我想我可以在开始时用给定的种子调用 srand 然后简单地调用 rand() 方法,但我不知道这是否是正确的方法。你怎么看?
void Cluster::train(int K, int reps, int gradientReps, int improveReps, Scalar lambda, int seed, int whichLoss)
{
unsigned int seed_ = seed;
unsigned int* sptr = &seed_;
//srand(seed);
for (int rep = 0; rep < reps; rep ++)
{
for (int k = 0; k < K; k ++)
if (rep == 0 or (int) chat[k].size() == 0 or (int) chat[k].size() == gd->nNodes)
{
for (int i = 0; i < gd->nNodes; i ++)
if (rand_r(sptr) % 2 == 0) chat[k].insert(i);
for (int i = 0; i < gd->nEdgeFeatures; i ++)
theta[k*gd->nEdgeFeatures + i] = 0;
theta[k*gd->nEdgeFeatures + rand_r(sptr)%gd->nEdgeFeatures] = 1.0;
}
for (int k = 0; k < K; k ++)
{
for (int o = 0; o < K; o ++)
{
int x1 = o;
int x2 = rand_r(sptr) % K;
// code
}
}
}
}
source 的链接.以上代码在main.cpp和cluster.cpp中。
最佳答案
如果你的编译器支持 C++11,我会使用 new random number library .如果没有,您应该尝试 Boost random (基本上是一样的)。我推荐使用 mt19937
随机数引擎,它产生的随机数质量非常好,而且速度也很快。
那么您的代码将如下所示:
std::mt19937 rng;
...
std::uniform_int_distribution dist(0, K - 1);
...
int x2 = dist(rng);
关于c++ - 将 rand_r 更改为 srand/rand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30840370/
这个问题在这里已经有了答案: What‘s the difference between srand(1) and srand(0) (7 个答案) 关闭 8 年前。 srand(0) 和 sran
我刚刚发现 srand(1) 将 C(++) 的 PRNG 重置为调用 srand 之前的状态(如reference)。但是,种子 0 似乎也这样做,或者任何调用 srand 之前的状态似乎使用种子
是否允许 srand(0) 与 srand(1) 具有相同的效果? C11, 7.22.2.2 srand 函数(强调): The srand function uses the argument a
如标题所示……可以将srand用作Flash的Math.random吗? 我问是因为我想以可重复的方式生成伪随机数。 最佳答案 不。但是过去我曾用BitmapData.noise()作为穷人的替代品。
但它总是给我 42 作为 SIZE。我想用 srand(time(NULL)) 随机化 SIZE 但显然它不起作用,因为它低于 SIZE 的随机化。当我尝试在 SIZE 随机化之前添加它时,编译器对我
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题?通过 editing this post 添加详细信息并澄清问题. 1年前关闭。 Improve this
我不明白 srand() 的含义在创建一个随机数。这是我的代码: /* srand example */ #include /* printf, NULL */ #include
我创建了一个选择排序算法。我想用各种输入来测试我的程序。 在不实际输入每个数组元素的情况下,如何使用操作数组的算法实现排序、反向排序和随机数组(固定长度[即 100,000])以用于测试目的? 最佳答
这个问题是关于这个问题中的评论的 Recommended way to initialize srand?第一条注释表示 srand() 在应用程序中只能调用一次。为什么会这样? 最佳答案 这取决于您
这个问题是关于这个问题中的评论的 Recommended way to initialize srand?第一条注释表示 srand() 在应用程序中只能调用一次。为什么会这样? 最佳答案 这取决于您
这个问题是关于这个问题中的评论的 Recommended way to initialize srand?第一条注释表示 srand() 在应用程序中只能调用一次。为什么会这样? 最佳答案 这取决于您
这个问题是关于这个问题中的评论的 Recommended way to initialize srand?第一条注释表示 srand() 在应用程序中只能调用一次。为什么会这样? 最佳答案 这取决于您
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Recommended way to initialize srand? 在c中使用srand()时遇到以下问题。
我已经用 C++ 实现了 RSA 算法,程序运行正常,但是 srand 调用使程序变慢了。我使用 srand 生成了两个质数和加密 key (e)。这是片段 ...................
谁能解释一下 srand 到底做了什么。我知道它与函数 rand 相关,并且输入 srand 函数的值是一个种子值,但这个种子值究竟如何影响 rand 函数? 最佳答案 在带有特定参数的 srand
#include #include using namespace std; int main () { srand(5); int r = rand() % 100 co
这个问题在这里已经有了答案: srand() — why call it only once? (7 个答案) C program - srand() [duplicate] (6 个答案) Rec
所以我正在制作一个选择排序程序,我必须在其中输入两个值:一个用于数组中使用的数字,另一个用于随机数生成器的种子。我对如何调整使用的数量有点困惑,因为我们可以放入的最大元素数量是 15。数组目前有 8
我正在制作一款游戏,目前正在研究随机掉落系统。 我计划创建一个随机 ID,这反过来又是项目的设计。如果我将相同的 ID 两次传递给 createItem 函数,它应该会创建完全相同的项目。 无论如何。
我将 srand() 与固定种子一起使用,我需要在一次执行中使用一组不同的种子(例如 100、200、300、...、1000)运行测试。这可能吗?问题是 srand() 定义在 main 的开头,所
我是一名优秀的程序员,十分优秀!