【问题标题】:Numbers positive and negative正数和负数
【发布时间】:2013-04-21 20:47:09
【问题描述】:

我做错了什么?我想要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];
}

我是初学者,我想要随机数,但我只有一个非常大。 有人可以帮忙吗?

抱歉,您看到了我没有看到的问题。现在我知道我应该只写&gt;&gt;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"
}

【问题讨论】:

  • What am i doing wrong? 将此问题标记为c#
  • 另外,甚至没有试图通过发布您遇到的错误来提供帮助。
  • 另外,不发布实际代码。
  • 您的代码错误太多。请发布一个独立的可编译示例来重现您的问题。

标签: c++ negative-number


【解决方案1】:

您尚未播种随机数生成器。在程序开始时调用srand()

通常的方法是使用当前时间来调用它:

std::srand(std::time(0))

您还需要包含&lt;ctime&gt;

注意rand()doesn't return negative values,这个逻辑你需要自己实现。

【讨论】:

    【解决方案2】:
    cin<<a;
    

    在这里,您使用了错误的运算符。将尖括号视为显示数据流。你想要:

    cin>>a;
    

    cout类似:

    cout<<t[i];
    

    您还在第一个 for 循环中使用 a 而不是 i 来索引 t

    t[i]=rand();
    //^ This is i, not a
    

    另一个问题是您正在使用编译器扩展来创建运行时大小的数组。也就是说,在标准 C++ 中,您不能使用 a 作为数组的大小,因为它在编译时是未知的。

    【讨论】:

    • 好的,我做到了。但这不是问题所在。我只是在这里写错了。考特也是
    • @Antua 什么?解决了吗?
    • 是的,确实如此。我还有很多
    • @Antua 好吧rand 可以给出一个很大的数字...你查过rand 做什么了吗?如果您每次都想要不同的值,则需要播种它。
    • @Antua 你试过在每个输出的数字之间换行吗?如cout &lt;&lt; t[i] &lt;&lt; '\n';?
    【解决方案3】:
    t[i]=rand();
    

    不是

    t[a]=rand();
    

    还是你也写错了?

    【讨论】:

    • 如果你想要负数,那么你只需要从 rand() 返回的值中减去一些东西。 rand() 只返回正数。
    【解决方案4】:

    我不确定 100%,但 IMO,rand() 只能创建正数,从 065535,这取决于编译可执行文件的时间:这意味着一旦你编译了.exe 文件,它会一遍又一遍地给出相同的数字!

    为了让他产生不同的数字,你必须使用srand()

    另一件事: 在 C++ 中,您不能使用 type array[n] [它不在标准中!] 分配动态数组,即使编译器允许您这样做! 实际上,编译器会将您的代码转换为 array = new type[n],您必须使用 delete[] 关键字解除分配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2017-01-31
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多