C语言中的随机函数

C语言中的随机函数,c,C,我需要一个11到99之间的随机函数。我写道: int random (void){ int i2; i2=11+(rand()%99); return i2; } 但是数字超过了99。为什么?因为如果rand()返回98,那么98%99就是98和98+11>99 要做到这一点,你需要 i2 = 11 + ( rand() % 89 ); rand()%89将为您提供数字[0,88],因此+11将成为[11,99] 顺便说一下,别忘了带(time(NULL

我需要一个11到99之间的随机函数。我写道:

int random (void){
    int i2;
    i2=11+(rand()%99);      
    return i2;
}
但是数字超过了99。为什么?

因为如果
rand()
返回
98
,那么
98%99
就是
98
98+11>99

要做到这一点,你需要

i2 = 11 + ( rand() % 89 );
rand()%89
将为您提供数字
[0,88]
,因此
+11
将成为
[11,99]


顺便说一下,别忘了带(time(NULL)),否则它(很可能)会一直生成相同的(伪)随机数序列。

因为
rand()%99
返回一个介于0和98之间的值;然后加上11,范围是11到109。 您必须用89更改99(值%100)在0到99之间。加上11,范围是11到110

试着这样做:

int random (int min,int max){
    return min+(rand()%(max-min));
}

参数min和max表示数字的范围

如果
rand()
返回98怎么办?我的输出是:52641087873931046545向下投票者:OP显示了努力-他确实尝试了自己的代码。他的问题很清楚。它对其他初学者也很有用。事实上,他可能是编程新手,这并不意味着要投反对票。@amit的评论是+1+我赞成这个问题,因为投了反对票。这可能会让人失去动力。对OP来说,这不是一个完全一致的分布。请注意。我如何处理rand(time(NULL))?@user1601731-这里有一个有用的链接:-换句话说,你只需要在某个地方调用,就可以生成不同的(伪)随机数序列。你忘记在最后一个表达式中添加1。它应该是
rand()%(max-min+1)
。它的范围在11到109之间。你忘了11在范围的开始。