随机打乱C++数组(每次不同)
Randomly shuffle C++ array (different each time)
我想在C++中打乱一个数组,每次运行程序时,我都想进行不同的随机打乱。我有长度为的myArray
。目前我正在使用:
random_shuffle(myArray, myArray+N)
但这每次都会产生相同的混洗。为了包含一个随机数,我尝试了:
random_shuffle(myArray, myArray+N, rand()%i)
但是我得到了错误CCD_ 2。
基于这个例子,我考虑使用shuffle
函数,但似乎我一直在使用2011年以前的编译器。
如果这是一个极其愚蠢的问题,我很抱歉。我在SO上找不到任何关于这个特定问题的东西,谷歌只是告诉我创建洗牌算法的方法。
random_shuffle(myArray, myArray+N)
将使用std::rand()
来获得随机数。如果希望每次运行程序时随机序列不同,则需要首先使用std::srand()
为随机生成器种子。通常使用当前系统时间为随机数生成器播种,这对于非安全相关的目的来说通常足够好。您只需要在程序执行期间执行一次。
std::srand(std::time(0));
如果在第一次调用std::rand()
之前没有调用std::srand()
,那么std::rand()
的行为就好像调用了std::srand(1)
一样——也就是说,每次运行程序时都会隐式地为其设定相同的值,这将在每次执行程序时产生相同的随机序列。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '