猿问

使用兰德生成随机数

gcc 4.4.4 c89


我正在使用下面的代码。但是,我不断得到相同的数字:


    size_t i = 0;


    for(i = 0; i < 3; i++) {

        /* Initialize random number */

        srand((unsigned int)time(NULL));

        /* Added random number (simulate seconds) */

        add((rand() % 30) + 1);

    }

我想退回0到30。但是,我上一次执行此操作时,我获得了17次3次。


非常感谢,


慕森卡
浏览 371回答 3
3回答

弑天下

您正在循环内进行播种(由于执行循环的速度快,所以具有相同的值),这会使每次生成的随机数相同。您需要将您的种子功能外循环:/* Initialize random number */srand((unsigned int)time(NULL));for(i = 0; i < 3; i++) {&nbsp; &nbsp; /* Added random number (simulate seconds) */&nbsp; &nbsp; add((rand() % 30) + 1);}
随时随地看视频慕课网APP
我要回答