zoukankan      html  css  js  c++  java
  • C語言 rand函数 进阶探讨与实现

    C语言中随机函数应用   
        可能大家都知道C语言中的随机函数random,但是random函数并非ANSI C标准,所以说。random函数不能在gcc,vc等编译器下编译通过。

    那么怎么实现C语言中的随机函数呢?     

        除了random函数,另一个rand函数。也是一个随机函数,能够产生从0到rand_max的随机数。

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

    执行上面的代码,你会发现系統确实生成了一个随机数。可是继续执行多几次,你会发现系统生成的数字还是曾经那个,什么情况,伤我感情~~

    原來是由于随机数取在C语言中採用的是固定序列,所以每次运行所取的是同一个数。

    可是。仔細想想,假设要生成一大堆不一樣的随机数。那要怎么做啊,跪求苍天啊啊啊啊啊啊~~~~ 那是没实用滴,还不如靠自己~~

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    int main()
    {
        int x;
        time_t t;
        srand((unsigned) time(&t));
        for(int i=0; i<10; i++) {
            printf("%d
    ", rand()%100); //生成10個0~99的不同隨機數
        }
        return 0;
    }

    这时执行程序,会发现每次产生的随机数都不一样。
    那么为什么第一个程序一样而第二个程序不一样呢?
    第二个程序用到了一个新的函数srand,这个函数是给随机数产生一个随机种子(seed),函数原型是
    srand( (unsigned) time(NULL));     
    time的值每时每刻都不同。

    所以种子不同,所以。产生的随机数也不同。
    所以说,要想产生不同的随机数,在使用rand之前须要先调用srand 
    因为rand产生的随机数从0到rand_max,而rand_max是一个非常大的数,那么怎样产生从X~Y的数呢?
    从X到Y。有Y-X+1个数,所以要产生从X到Y的数。仅仅须要这样写:
    k=rand()%(Y-X+1)+X;  
    这样,就能够产生你想要的不论什么范围内的随机数了。


  • 相关阅读:
    Calling a parent window function from an iframe
    JSON with Java
    Posting array of JSON objects to MVC3 action method via jQuery ajax
    What's the difference between jquery.js and jquery.min.js?
    jquery loop on Json data using $.each
    jquery ui tabs详解(中文)
    DataTables warning requested unknown parameter
    Datatables 1.10.x在命名上与1.9.x
    jQuery 1.x and 2.x , which is better?
    DataTabless Add rows
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5098385.html
Copyright © 2011-2022 走看看