前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C-Rand学习

C-Rand学习

作者头像
ly0n
发布2020-11-04 10:59:10
7480
发布2020-11-04 10:59:10
举报
文章被收录于专栏:ly0n

函数概念

rand()函数–C语言中用来产生随机数的函数。 rand()函数界限–随机产生一个0-0x7fff的数,即最大是32767。 rand()函数原型–int rand(void);

函数调用

rand()函数

  • rand()函数需要的头文件是:<stdlib.h>
  • 调用rand()函数前都会查询是否调用了函数srand(send) 是否给send设定了一个值,如果有就会自动调用srand(send)来初始化一次起始值。
  • 若之前没有调用srand(send),系统会自动给send赋初始值,即srand(1)自动调用一次。
  • 使用rand()函数产生1-100以内的随机整数:int number1 = rand() % 100+1;

srand()函数

  • srand()函数需要的头文件仍然是:<stdlib.h>
  • srand()`函数是随机数生成器的初始化函数
  • 函数方法:void srand(int send)
  • 这个函数需要一个种子,如srand(1),用1来初始化种子。
  • 如果这个使用srand()函数播下的种子一样的话,那么随机产生的数也是一样的,有时候为了使产生的随机数不同,会使用时间种子srand(time(NULL)),每次产生随机数的时间不同,所以产生的随机数也不相同。
  • 还有另外一种初始化种子的方式如下,用进程的pid作为种子值seed,在同一个程序中,这样的种子的值是相同的
  • srand((unsigned int)getpid())

使用方法

代码语言:javascript
复制
## 使用rand()和srand()产生指定范围内的随机整数的方法

采用模除+加法的方法

因为对任意整有

0<rand() % (n-m+1) <= n-m+1

所以也存在

0+m<rand() % (n-m+1) +m <= n-m+m

因此要产生[m,n]范围内的整数,我们可以使用:

int num=rand()%(n-m+1)+m;

可以当作一个公式记录下来

实例分析

​ 我们可以写一个C让其产生100以内的10个随机整数,代码如下;

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
        srand((unsigned int)time(0));
        int i = 0;
        for(i=0;i<10;i++){
                int num = rand() % 50 + 1;
                printf("%d",num);

        }
        printf("\n");
        return 0;
}

​ 上面说到使用getpid的方法可以使种子都保持一直,所以我们使用getpid来生成固定的随机数;

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
        //srand((unsigned int)getpid());系统默认调用srand(1);
        int i = 0;
        for(i=0;i<10;i++){
                int num = rand() % 50 + 1;
                printf("%d",num);

        }
        printf("\n");
        return 0;
}

学习之路,切勿浮躁!

参考链接:https://blog.csdn.net/chikey/article/details/66970397

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数概念
  • 函数调用
  • 使用方法
  • 实例分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档