C++ C++;
我有以下代码:C++ C++;,c++,C++,我有以下代码: #include <cstdlib> #include <iostream> #include <stdlib.h> using namespace std; int main() { int a,n,count; count=0; randomize(); a=1+random(100); cout<<"Enter A No. Between 1 to 100"; do { cin>>n
#include <cstdlib>
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int a,n,count;
count=0; randomize();
a=1+random(100);
cout<<"Enter A No. Between 1 to 100";
do
{
cin>>n;
count++;
if(n>a)
cout<<"Enter a lower no.";
else if(n<a)
cout<<"Enter a higher no.";
}while(n!=a);
cout<<count;
system("PAUSE");
return EXIT_SUCCESS;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int a,n,计数;
计数=0;随机化();
a=1+随机(100);
coutn;
计数++;
如果(n>a)
cout您正试图调用的方法被调用并被调用
randomize
和random
不是该语言的一部分。您正在使用一个名为“randomize”的函数(此处:count=0;randomize();
)——编译器不知道在哪里可以找到该函数,因为它既没有在代码中定义,也没有包含在任何标题中
我怀疑你想要和我结婚
例如,您可以按如下方式重写现有代码。要使用此代码,您还需要在include中包含
:
int main()
{
int a,n,count;
count=0;
srand(time(NULL)); // use instead of "randomize"
a = 1 + (rand() % 100);
// ... Rest of your code
标准C中没有
randomize()
和random()
函数。您的意思可能是srand()
和rand()
> .>代码> RAND()%n>代码>在0(n,n)范围内不均匀地给出一个数字。
<代码>随机数()>代码>不是标准的C++函数,你必须使用<代码> SRAND(某物)< /C>来生成一个随机数生成器,其中<代码>某物< /C> >将是当前时间(<代码>时间(0)< /代码>)。 另外,random()
不是标准函数,您必须使用rand()
所以,像这样的事情(稍微清理一下):
#包括
#包括
#包括
使用名称空间std;
int main()
{
srand(时间(0));
int n,计数=0;
int a=1+(rand()%100);
cout>n;
计数++;
如果(n>a)
cout如果您有一个包含
的C++11编译器(如果您没有,可以使用boost库中的boost::random
),则可以使用该类获得更好的伪随机数:
#include <ctime>
#include <random>
class rng
{
private:
std::mt19937 rng_engine;
static rng& instance()
{
static rng instance_;
return instance_;
}
rng() {
rng_engine.seed(
static_cast<unsigned long>(time(nullptr))
);
};
rng(rng const&);
void operator=(rng const&);
public:
static long random(long low, long high)
{
return std::uniform_int_distribution<long>
(low, high)(instance().rng_engine);
}
};
不必手动播种,因为它将被播种在第一个调用。
到目前为止,4个完全重复的答案:“对于Turbo C++,没有一个对我有用。这是OK的,但是在DEV C++边注意:代码不需要同时<代码> <代码>和<代码> <代码>。@您的回答是非常有用的。这些函数不是I。n标准C也不在标准C++中。如果不需要移植性,使用非标准函数是可以的,但是当你尝试使用多个编译器时,你需要编写可移植代码。顺便说一下,尽管代码是正式的C++,但是随机数的东西是纯C。没有任何本质上的错误,但是有更好的随机数设施。在C++中,如果您有Tr1或C++ 11或Boo..33D:\DEV CPP\\\STDLI.h,函数“<代码>空格Srand(未签名int)”342 d:\DEVCPP包含\\STDLIB的函数太少,函数太多的参数< /代码> int RAND()“换了这个之后,我得到了这些errors@user142187我不会为你写代码。你点击链接了吗?你有没有尝试用谷歌搜索如何正确使用srand
?@user142187-是的,你需要知道这些函数需要什么参数才能调用它们。查一下。如果你也能完成我的工作,那就太好了,所以我可以在周末去。@user142187如果你不能用谷歌来找出如何调用一个简单的函数,我建议你换专业。@user142187我修改过-但我发布的链接中包含了所有这些作为示例,所以这至少应该给你一个起点…但请记住,rand()%N
不统一地给出[0,N]范围内的数字。请参阅:@MarcusRiemer在大多数情况下这是一个很好的近似值,基于代码的其余部分,不需要绝对统一的随机数。如果您是初学者,通常不必为如此复杂的问题而烦恼,我添加此项只是为了“以C++的方式做更多”
#include <ctime>
#include <random>
class rng
{
private:
std::mt19937 rng_engine;
static rng& instance()
{
static rng instance_;
return instance_;
}
rng() {
rng_engine.seed(
static_cast<unsigned long>(time(nullptr))
);
};
rng(rng const&);
void operator=(rng const&);
public:
static long random(long low, long high)
{
return std::uniform_int_distribution<long>
(low, high)(instance().rng_engine);
}
};
long a = rng::random(a, b);