189 8069 5689

c语言从rand函数范围 c语言中rand函数范围

C语言:用rand函数 产生1到10范围内的随机数的问题,有点地方求教

这样写,count[10] = {0};

创新互联公司专业为企业提供广平网站建设、广平做网站、广平网站设计、广平网站制作等企业网站建设、网页设计与制作、广平企业网站模板建站服务,十载广平做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

int n ;

while(1)

{

n = random();

if(n%10 == 0 )

count[9]++;

else

count[n%10-1]++;//注意count的下标是n%10-1不是n%10+1

}

c++中rand()函数的范围

rand函数范围:在某些平台下(例如 Windows)RAND_MAX 只有 32768。如果需要的范围大于 32768,那么指定 min 和 max 参数就可以生成大于 RAND_MAX 的数了,或者考虑用 mt_rand() 来替代它。

rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。

C语言

srand((unsigned)time(NULL))则使用系统定时/计数器的值作为随机种子。每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应的,若将srand(unsigned)time(NULL)改为srand(TP)(TP为任一常量),则无论何时运行、运行多少次得到的“随机数”都会是一组固定的序列,因此srand生成的随机数是伪随机数。

库函数中系统提供了两个函数用于产生随机数:srand()和rand()。 原型为:

函数一:int rand(void);

返回一个[0,RAND_MAX]间的随机整数。

函数二:void srand(unsigned seed);

参数seed是rand()的种子,用来初始化rand()的起始值。

但是,要注意的是所谓的“伪随机数”指的并不是假的随机数。其实绝对的随机数只是一种理想状态的随机数,计算机只能生成相对的随机数即伪随机数。计算机生 成的伪随机数既是随机的又是有规律的 —— 一部份遵守一定的规律,一部份则不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这体现到了事物的特性 —— 差异性;但是每种树的叶子都有近似的形状,这正是事物的共性 —— 规律性。从这个角度讲,我们就可以接受这样的事实了:计算机只能产生伪随机数而不是绝对的随机数。

系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed指定了一个值,那么 rand()就会将seed的值作为产生伪随机数的初始值;而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始 值。如果给了一个定值,那么每次rand()产生的随机数序列都是一样的~~

所以为了避免上述情况的发生我们通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来 产生种子。如果仍然觉得时间间隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某个合适的整数。 例如,srand((unsigned)time(NULL)*10)

另外,关于time_t time(0):time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。

srand()、rand()用法举例:

#includetime.h

#includestdlib.h

#includestdio.h

void main()

{

inti,j;

srand((int)time(0));

for(i=0;i10;i++)

{

j=1+(int)(10.0*rand()/(RAND_MAX+1.0));

printf("%d",j);

}

}

rand()随机函数产生的值的范围?

cplusplus中有这样的介绍:

rand函数产生一个0到RAND_MAX的伪随机数,这里的RAND_MAX因不同的实现而异,但RAND_MAX至少为32767。(比如,MSVC中通常为0x7fff,即32767,而Linux平台下GCC中RAND_MAX通常会远远大于这个值)

有一些其他编程语言的rand函数确实是产生一个[0.0, 1.0)之间的浮点数。比如MATLAB。

在C中,rand() % 32会产生一个[0, 32)之间的伪随机数,那么rand() % 32 + 1的取值区间实际上是[1, 33)。

要产生[0, 32)(开区间)之间伪随机数:rand() % 32即可。

扩展资料:

注意:如果要使用函数RAND()生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按F9,将公式永久性地改为随机数。

不过,这样只能一个一个的永久性更改,如果数字比较多,也可以全部选择之后,另外选择一个合适的位置粘贴,粘贴的方法是点击右键,选择“选择性粘贴”,然后选择“数值”,即可将之前复制的随机数公式产生的数值(而不是公式)复制下来。

参考资料来源:百度百科-随机函数

C语言rand取值范围是多少

rand()的取值范围是[0 RAND_MAX]

例子

rand()%x+y;

这样就是产生[y,x+y)之间的数字

关于C语言中rand函数的一个简单问题—rand函数产生随机数的范围是??

rand()产生伪随机数,srand函数提供种子,种子不同产生的随机数序列也不同,所以通常先调用srand函数

time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒,返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。


当前标题:c语言从rand函数范围 c语言中rand函数范围
转载注明:http://cdxtjz.cn/article/doosssd.html

其他资讯