每当我运行以下程序时,返回的值总是6或13.
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
//void randomLegs();
//void randomPush();
//void randomPull();
//void randomMisc();
int main(int argc, const char * argv[])
{
srand(time(NULL));
//randomLegs();
cout << rand() % 14;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在今天和昨天,我已经将程序运行了近百次.
谁能告诉我我做错了什么?
谢谢.
编辑:顺便说一句,如果我将rand()的范围改为13或15,它就可以了.
这是一些代码:
#include <iostream>
int main() {
srand(1);
std::cout << rand() << "\n";
srand(UINT_MAX);
std::cout << rand() << "\n";
}
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出:
16807
16807
Run Code Online (Sandbox Code Playgroud)
为什么这两种种子产生相同的结果?它们在连续rand()调用中产生的整个值序列也是相同的。可能值的范围太大,因此纯属巧合。是吗:
rand()(如果是这样,我很好奇那可能是什么)(可能相关:种子 10、100、1000、10000 和 100000 分别产生 168070、1680700、16807000、168070000 和 1680700000。)
这是一个看似常见的问题,所以我希望我听起来并不多余.但是从rand()返回的范围应该在0和RAND_MAX之间,但是,当我做一个非常简单的rand语句时,我总是在很小的范围内得到回报.
此范围类似于1,4XX,XXX,XXX.我认为这可能是一个时钟的东西,所以我等了三十分钟,我仍然得到相同范围内的数字.
以下是20分钟前的一些示例输出:
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1439810968
80
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1439827775
29
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1439827775
29
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1439844582
78
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1439878196
29
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1439895003
78
Run Code Online (Sandbox Code Playgroud)
这是刚刚的示例输出:
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1456483512
78
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1456500319
80
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1456500319
80
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1456517126
29
Matthews-Macbook-Pro:Data_Structures matthewwright$ ./main
1456533933
78
Run Code Online (Sandbox Code Playgroud)
我知道rand()并不完美,但这似乎太相似了.如果范围是0 - RAND_MAX,则返回的每个数字都在相同的范围内似乎很奇怪.
这是我测试的代码:
#include <iostream>
#include <stdio.h> /* printf, scanf, puts, NULL */
#include <stdlib.h> /* srand, rand */
#include …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个模板类,当我定义一个非成员模板函数时,我得到"没有匹配函数来调用randvec()"错误.
我有一个模板类定义为:
template <class T>
class Vector {
T x, y, z;
public:
//constructors
Vector();
Vector(const T& x, const T& y, const T& z);
Vector(const Vector& u);
//accessors
T getx() const;
T gety() const;
T getz() const;
//mutators
void setx(const T& x);
void sety(const T& y);
void setz(const T& z);
//operations
void operator-();
Vector plus(const Vector& v);
Vector minus(const Vector& v);
Vector cross(const Vector& v);
T dot(const Vector& v);
void times(const T& s);
T length() const;
//Vector<T>& randvec();
//operators
Vector& …Run Code Online (Sandbox Code Playgroud)