相关疑难解决方法(0)

Rand()%14仅生成值6或13

每当我运行以下程序时,返回的值总是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,它就可以了.

c++ random srand

14
推荐指数
2
解决办法
916
查看次数

为什么 rand() 在用 1 和 UINT_MAX 播种时产生相同的值?

这是一些代码:

#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。)

c++ random srand

5
推荐指数
1
解决办法
341
查看次数

与srand()的rand()给出了奇怪的相似结果.rand()的返回非常相似

这是一个看似常见的问题,所以我希望我听起来并不多余.但是从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)

c++ random srand

2
推荐指数
1
解决办法
112
查看次数

模板问题:没有匹配的呼叫功能

我正在尝试创建一个模板类,当我定义一个非成员模板函数时,我得到"没有匹配函数来调用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)

c++ random templates class function

1
推荐指数
1
解决办法
4719
查看次数

标签 统计

c++ ×4

random ×4

srand ×3

class ×1

function ×1

templates ×1