C语言中使用rand()函数产生随机数用法

srand和rand函数的用法

参考链接:关于 time() 函数
关于 rand() 函数

  1. 需要的头文件是<stdlib.h>

  2. rand()函数说明产生一个范围在0~RAND_MAX之间的整数,RAND_MAX一般是 0 ~ 32767之间(两个字节16位),若是unsigned int 双字节是65535,四个字节是 4294967295 的整数范围。

    需要注意的是,单独一个 rand() 函数产生的是假随机数,同一个程序多次运行产生的结果是一样的。若要不同,则需要借助 srand() 函数来为其进行初始化,产生随机数种子。rand() 在调用的时候,默认的随机数种子是 1。只有使用 srand() 每次得到的不同的随机数种子,返回的结果才不同。

3.srand() 函数说明:设置 rand() 函数产生随机数时的随机数种子。参数必须是一个整数,一般使用 time(NULL)(其中的 NULL 可以用 ASCII 码中的 0 代替) ,该函数没有返回值。如果每次 srand() 函数的参数相同,那么 rand() 函数产生的随机数也就相同。

4.一般使用样例

#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
	随机产生100 ~ 10 的随机数
    srand((int)time(0));
    for( int i = 0; i < 10; i++ )
    {
    	
        int num = (int)(10.0 * rand() / RAND_MAX + 1);
        printf("%d ", num);
    }
    return 0;
}

解释一下,

time() 函数说明:

time()函数的用途是返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。

time()函数是C语言标准库stdlib中的函数。因此要使用time(),必须在程序中包含<time.h>文件。

time_t time( time_t *t ) : 该函数返回值是一个 time_t 类型的数, 参数是一个指向 time_t 类型的指针。也可以用空指针表示,也就是0。


注意: 这个 srand() 函数只能放在循环外面,因为他只是给第一次循环中的 rand() 提供了一个随机数种子,后面每次循环都是以上次循环中 rand() 函数返回的结果作为随机数种子

当然用 rand() % n 也可以产生一个 [0, n) 范围的随机数,但是用 ( int )( n * rand() / RAND_MAX + 1 ) 来产生更加均匀。


产生一个 [a, b] 范围的随机数

num = a + rand() % ( b - a + 1)
不加 1 的话范围是 [ a, b ), 至于为什么是这样 ,稍微想一下就知道了^_^
  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值