【问题标题】:"rand()" not working, i keep getting the same number after every execute“rand()”不起作用,每次执行后我都会得到相同的数字
【发布时间】:2015-03-17 08:15:21
【问题描述】:

所以我正在为我的编程课创建一个 ATM 程序,长话短说,我必须创建大约四个随机数。我的问题是我的程序不会创建不同的数字,我执行程序时得到的数字一遍又一遍。 我的主函数中有srand(time(NULL));,由于我的变量是全局变量,我试图将它移出主函数,靠近我的全局变量,这给我留下了一个不兼容的错误。救命啊!!!

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>


int account_number = rand() % 5, pin = rand() % 3, chk_acc_bal = rand() % 4, sav_acc_bal = rand() % 5;

【问题讨论】:

  • main() 中只使用一次srand(time(NULL));。不要move it out of main
  • 您没有收到error: initializer element is not constant 错误消息吗?

标签: c random srand


【解决方案1】:

这里的问题是你试图用函数调用在文件范围内初始化你的变量。

只需尝试在主函数中初始化变量即可。类似的东西(我测试并工作):

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>

int account_number, pin, chk_acc_bal, sav_acc_bal;

int main(void)
{
    srand(time(NULL));

    account_number = rand() % 5;
    pin = rand() % 3;
    chk_acc_bal = rand() % 4;
    sav_acc_bal = rand() % 5;

    printf("%d\n",account_number);
    printf("%d\n",pin);
    printf("%d\n",chk_acc_bal);
    printf("%d\n",sav_acc_bal);

    return 0;
}

希望对您有所帮助。最好的!

【讨论】:

  • 感谢您和其他人的大力帮助。
【解决方案2】:

srand 是一个函数调用,这个不能放在文件范围内,你只能在里面放置声明。

把它留在main,这是它应该在的地方。

【讨论】:

    【解决方案3】:

    打电话

    srand(time(NULL));
    

    main 的开头一次。要使用rand 使用一些随机值初始化全局变量,请使用:

    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
    
    int account_number, pin, chk_acc_bal, sav_acc_bal;
    
    int main()
    {
      srand(time(NULL)); //Call srand in the start of main
    
      account_number = rand() % 5; //Initialize variables with a random value from here
      pin = rand() % 3; 
      chk_acc_bal = rand() % 4; 
      sav_acc_bal = rand() % 5;
    
      //Rest of the code
    

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 2021-12-20
      相关资源
      最近更新 更多