在Mac上使用Xcode用c++生成随机数的问题
Trouble generating random numbers in c++ on a Mac using Xcode
我正在编写一个程序,以不同的方式广泛使用随机数,我每次都得到相同的随机数。我知道把srand(time(NULL));
放在程序的开头来生成随机数生成器,所以我有这个,但是它不起作用。也许它与XCode或Mac或其他东西有关?我在网上找不到一个类似的问题,我有一个我没有尝试过的解决方案。我使用随机数的一些方法是:
for (int i=0; i<num; i++)
{
chrom_arr[i] = i;
}
random_shuffle(&chrom_arr[0], &chrom_arr[num-1]);
(获取一个包含一系列0到num-1之间随机整数的数组)
int crossover = rand() % num;
和其他简单的东西。即使我一开始有srand(time(NULL));
,它仍然不起作用。我也尝试过srand(time(0));
,也把它放在程序的不同部分,但我后来知道这是不对的。
Alex,你能不能发布一个小而完整的程序,每次运行它都不能生成不同的随机数?我很想看看……
这里有一个(当然)在我的Mac上每次运行都会产生不同的数字:
#include <iostream>
#include <ctime>
#include <cstdlib>
int main()
{
srand(time(NULL));
for (int i = 0; i < 10; ++i)
std::cout << rand() % 10 << std::endl;
return 0;
}
如果你在你的计算机上编译并运行它几次,它会做什么?
更新:
我以为你的意思是srand()
+ rand()
每次也产生相同的数字。这不是真的。然而,你对srand()
+ random_shuffle()
的行为是正确的:它可能每次都产生相同的数字,这取决于你的编译器。它在我的编译器(clang在Mac上)也是。
您应该尝试这样做:
srand(static_cast<unsigned int>(time(0)));
std::shuffle(chrom_arr.begin(), chrom_arr.end(), default_random_engine(rand()));
只要chrom_arr
是std::vector
就可以。一旦你开始使用c++,我想这就是你想要做的。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- Rand() 没有显示随机数,请帮助我了解出了什么问题:)
- 随机数有问题
- 生成 32 位随机数时出现问题
- 有关使用 boost 生成正常随机数的问题
- 类中的随机数生成器出现问题
- C++循环中调用伪随机数生成器函数 - 常量种子问题
- 在没有参数的情况下调用构造函数时生成随机数的问题
- 生成随机数并插入已包含n个数的数组时出现性能问题
- 在Mac上使用Xcode用c++生成随机数的问题
- c++中随机数的播种问题
- 产生随机数的问题
- 用CUDA通过拒绝方法生成随机数.性能问题