c++ rand()每个数字只使用一次
C++ rand() each number only once
我需要rand()之类的东西,但每个数字只需要一次。
在示例中,我有10个"。txt"文件,命名为数字(1-10)。我想读取里面的内容并计算它,但是随机的。我不想要1.txt -> 2.txt -> 3.txt ->…而是像
这样随机的东西5.txt -> 4.txt -> 1.txt ->…
每个数字只能出现一次
是否有"简单"的方法来做到这一点?
string Path = "./Questions_Niko/" + random + ".txt";
创建一个您想要的数字向量,并使用std::shuffle
然后依次遍历vector
有几种方法。例如,您可以使用标头<algorithm>
std::random_shuffle
例如#include <algorithm>
#include <iterator>
//...
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
std::random_shuffle( std::begin( a ), std::end( a ) );
for ( int i : a )
{
// some stuff
}
}
另一种方法是使用标准类std::bitset
,为已选定的数字在集合中设置相应的位
为每个结果创建一个哈希映射。
std::random_shuffle
可能适合您的需要,但是如果您不能或不想这样做,您可以借用mshuffle:
int mix[10];
int swap;
for (i = 9; i >= 0; i--) {
int j = rand() % i;
swap = mix[j];
mix[j] = mix[i];
mix[i] = swap;
}
假设您先调用了srand()
,这将混淆名为mix
的数组。它不需要是一个 int
s数组
使用srand()
将解决您的问题
//Randomize seed
srand(time(NULL));
for(i to size)
Arr[i]=rand()%size
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中一次将矢量值写入多个文件
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么 zlib 放气初始化调用一次不起作用?
- 在一次迭代中从 txt 文件中读取多行
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 搜索字符串是否至少包含一次从 0 到 9 的所有数字的最有效方法
- 如何使用Mersenne Twister生成两个数字之间的所有值一次
- 如何一次读取一个数字并将其存储在数组中,跳过重复项
- 一次打印 2 个字节的十六进制数字
- 生成一个rand()%25,其中每个数字只能出现一次
- c++将输出(数字)保存到一个数组中.一次两个数字
- 使用位运算符查找在数组中只出现一次的数字
- 找出一个数组中是否至少有一次从1到K的所有数字
- 一个数字只出现一次
- c++ rand()每个数字只使用一次