我做错了什么?我希望a
个随机数。负整数和正整数
#include <iostream>
#include <cstdlib>
int main(){
int a;
cin<<a;
int t[a];
for(int i=0;i<a;i+=1)
t[a]=rand();
for(int i=0;i<a;i++)
cout>>t[i];
}
我是初学者,我想要随机数,但我只有一个非常大。 有人可以帮忙吗?
对不起,但你看到我没有的问题。现在我知道我应该只写>>endl
修改 我纠正了我的代码,现在可以使用了
#include <cstdlib>
#include <time.h>
int main(){
int a;
cin>>a;
for(int i=0;i<a;i++)
cout<<(rand()-rand())<<endl;//i asked only for this "endl"
}
答案 0 :(得分:2)
您还没有播种随机数生成器。在程序开始时致电srand()
。
通常的方法是用当前时间调用它:
std::srand(std::time(0))
您还需要包含<ctime>
。
请注意rand()
doesn't return negative values,您需要自己实施的逻辑。
答案 1 :(得分:1)
cin<<a;
在这里,您使用了错误的运算符。将尖括号视为显示数据流。你想要:
cin>>a;
与cout
类似:
cout<<t[i];
您还在第一个t
循环中使用a
而不是i
为for
编制索引:
t[i]=rand();
//^ This is i, not a
另一个问题是您使用编译器扩展来创建运行时大小的数组。也就是说,使用标准C ++,您不能使用a
作为数组的大小,因为它在编译时是未知的。
答案 2 :(得分:1)
t[i]=rand();
不是
t[a]=rand();
或者你也写错了吗?
答案 3 :(得分:1)
我不确定100%但IMO,rand()
只能创建正数,从0
到65535
,具体取决于编译可执行文件的时间:这意味着一旦你编译了.exe
文件,它就会一遍又一遍地给出相同的数字!
为了让他产生不同的数字,你必须使用srand()
。
另一件事:
在C ++中,您无法使用type array[n]
分配动态数组[它不在标准中!],即使编译器允许您这样做!
实际上,编译器会在array = new type[n]
中翻译您必须使用delete[]
关键字取消分配的代码。