zoukankan      html  css  js  c++  java
  • c语言随机函数&&时间函数

    c语言中的随机函数为rand(),但是rand生成的值得大小主要相对一个变量才产生的一定有含义的数,这个相对的变量我们可以再srand()函数中进行设置,srand函数是void类型,内部含一个无符号整形

    定义如下

    如果我们不定义的话

    重复执行下面的代码产生的效果可能是同一个数

    但是如果在srand()中设置一个随时改变的参照量,那么每次执行产生的rand值就不会痛,
    我们知道有一个函数time(),这个值是不断的改变的,我们可以将其嵌入在srand中,那么每次产生rand值就会是不同的
     
    time()的返回是一个_int64 类型的数,time的定义是 time——t time(time_t *timer)
    我们在定义的时候可以不使用返回类型time_t,我们只是调用time(time_t *timer)
    那么我们的产生的随机值就存放在了*timer里面,后面我们可以通过只用指针*timer来调用我们产生的值
    其中time产生的值就是unix的时间戳,产生的值是以秒为单位来进行计算的,时间的计算就是目前的时间与1970年1月1日0时0分0秒之间的决定值
    只不过是用秒来表示,
    同时里面的参数可以不为*timer,可以为NULL,也可以直接用0来代替,
     
     
    srand()是void类型,我们在srand()里面嵌套不断变化的函数time(0),那么我们产生的随机数每时每刻的相对值都是不同的,所以产生的随机数也就是不同的
     
    rand()函数是有返回值的,,至于要求产生多大范围内的数需要自己控制;
     
    ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-—————————
    华丽的分割线
    如果上面的理解了,下面是比较官方的解释方法
    ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
     
    rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。
    (1)使用该函数首先应在开头包含头文件stdlib.h
    #include<stdlib.h>
    (C++建议使用#include<cstdlib>,下同)
    (2)在标准的c库中rand可以产生于一个0~rand_max之间的一个随机数,rand_max是stdlib中定义的一个数,与系统有关
    (3)因为rand每次都是按照顺序产生固定的随机数,所以对于同一个程序,我们多次调用执行,会产生同样的数,也就是产生同样的效果,所以我们有时候也管随机数叫做伪随机数,
    (4)为了使得每次随机数生成时都生成一个不同的随机数,也就是不同的随机数序列,所以我们每次都为随机数生成器提供一个新的随机种子,我们可以通过使用srand()产生种子进行散播种子,只要种子不同,我们通过调用rand就会生成不同的随机数,
     
     
     
    srand成为随机数生成器的初始化器
     1 /* This program generates and prints ten random integers between 1 and RAND_MAX*/
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 int main()
     5 {
     6     unsigned int seed; /*申明初始化器的种子,注意是unsigned int 型的*/
     7     int k;
     8     printf("Enter a positive integer seed value: 
    ");
     9     scanf("%u",&seed);
    10     srand(seed);
    11     printf("Random Numbers are:
    ");
    12     for(k = 1; k <= 10; k++)
    13     {
    14         printf("%i",rand());
    15         printf("
    ");
    16     }
    17     return 0;
    18 }

    当种子为1的时候,我们可以不使用srand,因为系统默认·的种子为1

    stdlib.h 中这两个函数的原型是:
    int rand();
    void srand (unsigned int);
    srand(time(0)); i=rand();
    或者srand(time(NULL));
    这样就是一个伪随机数。
    rand()产生伪随机数,srand函数提供种子,种子不同产生的随机数序列也不同,所以通常先调用srand函数 time()返回的是系统的时间(从1970.1.1午夜算起),单位:秒,种子不同当然产生的随机数相同几率就很小了。
    用rand()随机生成在[x,y]内的整数
    int k;
    k=x+rand()%(y-x+1)/*k即为所求范围内随机生成的数,rand()%a的结果最大为a-1*/
     
     
     
     
     
  • 相关阅读:
    这些特效对于学习前端我们很有用
    每周前端开源推荐第二期
    每周前端开源推荐第七期
    BeeFramework:以极客的方式开发你的应用
    node-webkit文档翻译#package.json
    android批量文件上传(android批量图片上传)
    VC多线程临界区
    【美妙的Python之三】Python 对象解析
    (转载)屌丝从毕业时的月入3000到三年后亿万身家的精彩励志之旅
    fedora 安装 pidgin-lwqq
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/5556962.html
Copyright © 2011-2022 走看看