在c++中从向量生成随机数
Generating a random number from a vector in c++
我正在测试如何做到这一点之前,我试图在一个更大的程序中实现它,我必须这样做,一个问题正在出现。这段代码工作得很好,但它仍然只给出向量中的第一个数字。到底是哪里出了问题?
#include <iostream>
#include <string>
#include <vector>
#include "stdlib.h"
#include "time.h"
using namespace std;
int main()
{
int randomNumber;
int length;
int i = 0;
vector<int> x;
x.push_back(12);
x.push_back(1);
x.push_back(6);
x.push_back(34);
x.push_back(23);
srand(time(0));
length = sizeof(x.capacity() - 1) / sizeof(int);
while(i < 10){
randomNumber = x[rand() % length];
cout << randomNumber << endl;
i++;
}
return 0;
}
这个调用是不对的:
length = sizeof(x.capacity() - 1) / sizeof(int);
你应该使用x.size()
来获得向量的大小。
你在上面一行所做的是-计算x.capacity() - 1
的大小,这是一个整数,然后除以一个整数的大小。因此长度总是1,所以rand()%length
总是0。
你计算向量的length
的方式是错误的:
length = sizeof(x.capacity() - 1) / sizeof(int);
因为capacity()
返回当前为vector分配的存储空间的大小,以元素表示,因此在您的示例中length
等于1
。
你应该用size()
代替:
length = x.size();
我想你只是想使用x.size()
,而不是length
:
randomNumber = x[rand() % x.size()];
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 创建一个带有随机数的向量
- 具有随机数的唯一向量
- 具有从特定范围的随机数初始化特征矩阵或向量初始化特征矩阵或向量的有效方法
- 从数字向量生成随机数
- 非重复随机数 2D 向量 (C++)
- 向量C++中的非重复随机数
- 在向量中插入唯一的随机数
- 用随机数C 填充向量
- 将随机数与向量大小进行比较时出错
- 随机数向量的值在放置在其他对象向量内时设置为 0。
- 用随机数填充向量
- 用不重复的随机数填充向量.为什么不工作
- 用随机数填充多个向量
- 在c++中从向量生成随机数
- 用随机数填充向量