随机非重复数字
Random non-repeating numbers
我有一个函数,它使用random_shuffle
生成非重复随机数。我想调用该函数n次,并让它生成n个不同的非重复随机数列表。我很确定我必须使用srand
函数,但我不确定如何使用。
// random generator function:
int myrandom (int i) { return std::rand()%i;}
void dealCards();
int main () {
for (int i=0; i<10; i++) {
dealCards();
}
return 0;
}
void dealCards(){
std::srand ( unsigned ( std::time(0) ) );
std::vector<int> myvector;
int myarray[32];
// set some values:
for (int i=1; i<33; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9
// using myrandom:
std::random_shuffle ( myvector.begin(), myvector.end(), myrandom);
std::cout << "myvector contains:";
std::srand ( unsigned (std::time(0)) );
for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it){
std::cout << ' ' << *it;
}
std::cout << 'n' << 'n';
}
您应该只为随机生成器播种一次。
移动
std::srand ( unsigned ( std::time(0) ) );
进入主体。
如果您的函数在不到一秒钟的时间内执行,那么下次将使用相同的种子重新为生成器设定种子,从而获得相同的序列。
这里有一个srand函数,可以让结果给你一些广泛使用的伪随机数:
srand(time(NULL));
您只能对随机值生成器进行一次种子设定,所以不要将其放置在循环中
如果你这样做的话,它根本无法正常工作。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 在C++中随机生成 20 个非重复数字
- 为什么我C++得到这个随机的奇怪数字
- C++:创建1000次唯一的随机分布,在任何分布中都没有重复的数字
- 如何编写一个递归函数,以随机的方式混淆从0到6的数字
- 奇怪的数字随机出现在输出中.(C++)
- 生成随机长度的数字字符串
- 随机生成的输出中有多少位数字 1、2、3
- 生成随机字符/数字
- 在随机生成的数组中查找重复的连续数字
- C++ 制作一个随机数字/字母生成器,代码中有问题
- 随机生成数字无法正常工作
- 我可以在不指定数字分布的情况下使用随机生成器吗?
- 随机函数在循环中调用时返回相同的数字!C++
- 保证在随机生成的数字中保证三位数
- 从C 到C#调用INT []显示随机大数字,而不是原始数组成员
- 随机数字双重类型
- c++随机数生成器:如何在每次执行时使数字随机