我如何在 c++ 中执行随机结果,如下所示的代码
How can I execute random results in c++ as the code given below?
#include <iostream>
using namespace std;
int main(){
int results[] = {1, 2, 3, 4, 5};
cout << results << endl;
return 0;
}
我每次都想要不同的结果。例如:第一次 1 第二次 2 等。有什么帮助吗?
一种简单的方法是用当前时间播种基本随机数生成器,然后使用 rand() 减少模化可能的结果数,从results
中选择随机元素
#include "iostream"
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
int results[] = {1, 2, 3, 4, 5};
srand(time(NULL));
cout << results[rand()%(sizeof(results)/sizeof(results[0]))] << endl;
return 0;
}
你可以做这样的事情。您必须为随机数设定种子,例如,使用表示当前时间的整数。因为如果你不调用 srand,程序每次都会继续以完全相同的方式洗牌数组。因此,一些程序甚至记录种子,因此它们可以使用相同的随机值运行程序。请注意,代码要求您使用 c++11 兼容的编译器进行编译。在我的系统上,时间(0)给了我自1970年1月以来的秒数。因此,我的程序的输出每次都会给我不同的结果。
还要注意,因为如果种子相同,您将始终获得相同的洗牌。因此,尽管您每秒都会得到不同的洗牌,但考虑到time(0)
的值,结果是可预测的,并且要获得真正高质量的随机数(因此随机洗牌),您必须做一些更不可预测的事情。
#include <iostream>
#include <vector>
#include <algorithm>
int main (){
std::srand(time(0));
std::vector<int> vec = { 1,2,3,4,5 };
std::random_shuffle( vec.begin(), vec.end() );
for ( int i = 0; i < vec.size(); i++)
std::cout << vec[i]<< std::endl;
return 0;
}
相关文章:
- 这两个代码片段相似,但显示的结果不同
- 为什么第二个代码给出了预期的结果,而第一个代码却没有?
- RapidXML - 代码创建意外结果
- 代码未在联机编译器上显示结果
- 为什么这两段使用 constexpr、__PRETTY_FUNCTION__ 和 char * 的代码有不同的结果?
- C++位移位在相反方向上具有相同的常量,结果不同,代码更改很小
- 我的代码厨师提交显示错误的结果
- 如何查找导致结果不一致的代码
- 如何使用 c++ 将股票代码的结果添加到 poloniex 中的数组中?
- 我无法弄清楚我的代码未显示预期结果的问题
- 为什么这段代码(在 Matlab 的 MEX 文件中使用 OpenMP)给出不同的结果?
- 为什么这两个相似的代码计算行列式的结果不同?
- 为什么这个C++程序在代码::块和在线 IDE 之间返回不同的结果?
- C++:汇编代码包含断言结果
- 有人可以解释一下'sizeof'在此代码中返回的结果吗
- 相同的代码在联机 IDE 和本地 IDE 中给出不同的结果
- 如何在C 中为文本文件编写代码结果(在void函数之内)
- 我的代码结果为零,我不知道为什么
- 当我尝试输入时,我的代码结果为0
- 数组大小会影响代码结果