分支和循环-2(随机数)

rand函数生成的是伪随机数,范围在0~randmax之间,可通过srand设置种子改变序列。srand通常配合time函数的当前时间戳使用,以保证每次运行生成不同的随机数。rand()%n可以调整随机数范围为0-n。
摘要由CSDN通过智能技术生成

随机数

生成随机数的函数

rand

int rand(void);

该函数会生成伪随机数,随机数范围在0~rand max直接,rand max是随着编译器变的,大部分编译器上是32767

rand函数需要调用头文件:stdlib.h

但因为rand函数生成的随机数是以一个种子为基准生成的,如果不改变种子,会出现第一次程序运行和第二次程序运行的结果会相同。

#include<Stdio.h>
#include<stdlib.h>
int main()
{
    printf("%d\n",rand());
    return 0;
}

srand

也是用于生成随机数

void srand(unsigned int seed);

程序调用rand之前要调用srand,所以通过改变seed参数可以改变rand函数的种子,从而出现不通序列的随机数。但随机的seed参数和随机rand,出现矛盾

time

时间是不断变化的,于是就非常适合作为种子来生成随机数

time函数可以调用时间

time_t time(time_t * timer);

time函数返回是1970年1月1日0分0秒到程序运行时间之间的差值,单位秒

返回类型是time_t类型,time_t类型本质上是32位或64位整型类型

timer参数如果不是null,而是指针变量,则将差值存在指定的内存中,即变量中

如果timer参数是null,则只返回差值。该差值也称作:时间戳

需要头文件:<time.h>

#include<Stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    //利用time函数的返回值设置种子
    //由于srand的参数是unsigned int ,所以调用time的返回值还要将其强制转换类型
    srand((unsigned int)time(NULL));
    printf("%d\n",rand());
    return 0;
}

srand函数不需要频繁调用,一次运行调用一次即可

随机数范围 

rand() %100;//生成范围0-99的随机数
rand() %100+1;//%100的范围是0-99,%100+1就是1-100
100+rand() %(200-100+1)//范围是0-100,加上100就是100-200
//因此随机数的范围a-b
//a+rand() %(b-a+1);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值