zoukankan      html  css  js  c++  java
  • 【C语言】产生随机数

    一、

    函数原型:int rand()

    头文件:#include <stdlib.h>

    返回值为随机值,参数为空,通过 rand 函数就会产生一个随机数。

    栗子:

    #include <stdio.h>
    #include <stdlib.h>
    int main(){
    int num;
    num=rand();
    printf("%d",num);
    return 0;
    }

        运行该栗子你会得到一个随机数,但是你再运行一次会发现仍然是你第一次得到的数。那是因为产生随机数的原理是这样的:产生随机数的原理是根据一个值,一般称为随机种子,然后把这个种子作为参数,经过一系列的公式运算产生出一个值,这个值就是随机数。又因为默认的种子是不变的,所以每次根据这个种子算出来的随机数肯定就是一样的了。我们通常需要每次运行都得到不一样的随机数,那么就要结合下面这个函数才能实现此功能。

    二、

    函数原型:void srand(unsigned int seed)设置随机种子,不用此函数的话种子默认为1,当参数seed不同时根据种子得到的随机数就不同,我可以把时间作为种子参数,这样就可以实现种子不断变化,从而得到不同的随机数,得到当前时刻的函数如下。

    三、

    函数原型:time_t time(time_t *timer)

    头文件:#include <time.h>

    将参数timer设置为NULL,其会返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数,主要用来获取当前的系统时间,注意,函数返回类型time_t是long 型

    所以srand()函数结合time()函数就可以得到每次运行都得到不一样的随机数了,栗子如下。

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main(){
    int num;
    srand((int)time(NULL));
    num=rand();
    printf("%d",num);
    return 0;
    }

    四、

    有时我们还需要要求随机数是在一个范围内,如实现掷色子程序,需要随机得到数在1~6范围内,此时我可以用‘%’来实现。
    ①假设我们要得到0~b范围内的数

    我们可以将随机得到的数对b取余那么得到的数肯定是大于等于0小于b的。

    ②但当范围为a~b时(a不等于0)

    我们可以先将得到的随机数对(b-a)取余,得到的数范围为0~(b-a),然后再加a,得到的数就在范围a~b内了。

     整理自http://www.jb51.net/article/83721.htm

  • 相关阅读:
    SVNKit学习——基于Repository的操作之print repository tree、file content、repository history(四)
    java操作svn【svnkit】实操
    python笔记38-使用zmail发各种邮件案例代码
    python笔记37-史上最好用的发邮件zmail
    python笔记3-邮件发送(smtplib)
    第9期《python3接口自动化测试》课程,6月29号开学!
    anyproxy学习4-Linux(Centos)搭建anyproxy环境
    anyproxy学习3-修改返回内容(beforeSendResponse)
    anyproxy学习2-rule模块实现接口mock功能
    anyproxy学习1-windows平台安装和抓手机app上https请求
  • 原文地址:https://www.cnblogs.com/LuRenJiang/p/7599519.html
Copyright © 2011-2022 走看看