产生随机数rand

41 篇文章 0 订阅
  • 在C语言中可以通过使用rand函数来生成随机数。rand函数是按指定的顺序来产生整数。但是C语言中产生的随机并不是真正意义上的随机有时候可以称为伪随机数。

  • 使用 rand() 生成随机数之前需要用随机发生器的初始化函数 srand(unsigned seed)进行伪随机数序列初始化,seed 又叫随机种子,意思就是如果每次提供的 seed 是一样的,那么每一轮生成的几个随机值也都是一样的,因此叫伪随机数,所以需要每次提供不同的 seed 值来达到完全的随机.通常在C语言中我们使用时间函数time(null)来作为seed,因为时间值每秒都不同。

  • 也可以使用time(0)的返回值(返回当前时间)来设置种子srand(time(0));

例:

#include <stdio.h>

# include <cstdlib> /c++中
#include <stdlib.h>

# include <ctime> /c++中
#include <time.h>

c++中使用头文件radom中的函数提供了更强大的随机数支持。

int main()

{

    srand(1);

    int i;

    for (i = 0; i < 10; i++)

    printf("%d, ", rand()%11); 

}

结果为:8, 9, 9, 1, 7, 5, 5, 10, 1, 0,

上述结果无论运行多少次都是这个结果,原因在于随机种子seed为1

但是当我们把seed值换成time(null)情况就不一样了
#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{
    //添加随机数种子,利用当前系统时间生成随机数
    srand(time(NULL));

    int i;

    for (i = 0; i < 10; i++)

    printf("%d, ", rand()%11); 

}

结果如下:6, 3, 4, 5, 5, 9, 8, 10, 10, 4

再点击一下:6, 4, 2, 4, 3, 2, 5, 1, 2, 9

在这里由于time(null)的作用所以seed不断的再变化即不断的生成了新的随机数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值