首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

rand

在头文件<stdlib.h>中定义

?

?

int rand();

?

?

返回?0?RAND_MAX(0和RAND_MAX包含)之间的伪随机整数值。

srand()种子使用的伪随机数发生器rand()。如果rand()在任何呼叫之前使用srand(),则rand()表现得像播种一样srand(1)。每次rand()播种时srand(),它必须产生相同的值序列。

rand() 不保证是线程安全的。

参数

(没有)。

返回值

包含?0?和之间的伪随机整数值RAND_MAX

笔记

对于产生的随机序列的质量没有保证。过去,某些实现在rand()产生的序列的随机性,分布和周期方面存在严重的缺陷(在一个众所周知的例子中,低位简单地在调用之间10之间交替)。rand()不建议用于严格的随机数生成需求,如密码学。

POSIX要求使用的伪随机数发生器的周期rand至少为232

.

POSIX提供了一个名为rand_r的rand的线程安全版本,这个版本已经过时了,并且被drand48系列函数所使用。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    srand(time(0)); //use current time as seed for random generator
    int random_variable = rand();
    printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
}

可能的输出:

代码语言:javascript
复制
Random value on [0 2147483647]: 1373858591

参考

  • C11标准(ISO / IEC 9899:2011):
    • 7.22.2.1 rand函数(p:346)
  • C99标准(ISO / IEC 9899:1999):
    • 7.20.2.1 rand函数(p:312)
  • C89 / C90标准(ISO / IEC 9899:1990):
    • 4.10.2.1 rand函数

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com