zoukankan      html  css  js  c++  java
  • c语言随机数

    一、产生一个C语言随机数需要用到以下函数

    1 #include <stdlib.h>
    2 
    3 int rand(void); //返回一个随机数,范围在0~RAND_MAX之间
    4 
    5 void srand(unsigned int seed); //用来设置rand()产生随机数时的随机数种子

    rand函数返回一个随机数,范围在0~到RAND_MAX之间

    用法:

    1 生成[x,y]的伪随机数
    2 
    3 k=x+rand()%(y-x+1)/*k即为所求范围内随机生成的数,rand()%a的结果最大为a-1*/
    4 
    5 j=(int)(n*rand()/(RAND_MAX+1.0)) /*产生一个0到n之间的随机数*/

    srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,一般使用srand((unsigned)time(NULL))系统定时/计数器的值作为随机种子。

    每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

    rand()函数默认情况下初始化种子值为1;

     

    下面我们产生介于1 到10 间的随机数值,暂时没有设置srand随机数种子(rand()函数默认情况下初始化种子值为1):
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <time.h>  
     4  
     5 int main()
     6 {
     7     int i = 0;
     8     int number = 0;
     9  
    10     for (i = 0; i < 9; i++)
    11     {   
    12         number = 1 + (int)(10.0 * rand() / (RAND_MAX + 1.0));   //产生1-10的随机数
    13 
    14         printf("%d ", number);
    15     }   
    16     printf("
    ");
    17     
    18     return 0;
    19 }
    
    
    可以看出每次产生的随机数都一样:
    1 [root@localhost 2nd]# ./rand
    2 9 4 8 8 10 2 4 8 3 
    3 [root@localhost 2nd]# ./rand
    4 9 4 8 8 10 2 4 8 3 
    5 [root@localhost 2nd]# ./rand
    6 9 4 8 8 10 2 4 8 3 
    7 [root@localhost 2nd]# 
    下面srand()用来设置rand()产生随机数时的随机数种子,使用srand((unsigned)time(NULL))系统定时/计数器的值作为随机种子
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <time.h>  
     4  
     5 int main()
     6 {
     7     int i = 0;
     8     int number = 0;
     9 
    10     srand((unsigned)(time(NULL))); //使用srand((unsigned)time(NULL))系统定时的值作为随机种子
    11  
    12     for (i = 0; i < 9; i++)
    13     {   
    14         number = 1 + (int)(10.0 * rand() / (RAND_MAX + 1.0));   //产生1-10的随机数
    15 
    16         printf("%d ", number);
    17     }   
    18     printf("
    ");
    19     
    20     return 0;
    21 }
    可以看出每次的结果都不一样:
    1 [root@localhost 2nd]# ./rand     
    2 9 5 7 10 8 5 3 3 3 
    3 [root@localhost 2nd]# ./rand
    4 3 5 5 8 7 2 7 1 1 
    5 [root@localhost 2nd]# ./rand
    6 5 8 1 10 6 1 4 2 2 
    7 [root@localhost 2nd]# ./rand
    8 2 6 7 6 9 1 6 8 8 
  • 相关阅读:
    mysql主从延迟判断,监控和问题处理
    oracle备份
    oracle的查询命令
    Appcan 自定义数字加减控件
    PowerDesigner16.5 有用地址
    git远程仓库关联(码云)
    leetcode27.移除元素(双指针法)
    leetcode26.删除排序数组中的重复项(双指针法,顺序表删除)
    leetcode21.合并两个有序链表(链表使用,递归算法)
    leetcode20.有效的括号(hashmap使用,键值匹配)
  • 原文地址:https://www.cnblogs.com/wenqiang/p/5403727.html
Copyright © 2011-2022 走看看