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*/
     
     
     
     
     
  • 相关阅读:
    Longest Palindromic Substring
    PayPal MLSE job description
    Continuous Median
    Remove Duplicates From Linked List
    Valid IP Address
    Longest substring without duplication
    Largest range
    Subarray sort
    Multi String Search
    Suffix Trie Construction
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/5556962.html
Copyright © 2011-2022 走看看