更多精彩,请点击上方蓝字关注我们!

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。

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

rand()会返回一随机数值,范围在0至RAND_MAX 间。返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767)我运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。 在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。具体见下面的例子。

一、如何产生不可预见的随机序列呢

利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。

在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:

1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;

2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)

3) 根据需要多次调用rand(),从而不间断地得到新的随机数;

4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

下面是0~32767之间的随机数程序:

根据上面的程序可以很容易得到0~1之间的随机数:

而产生1~100之间的随机数可以这样写:

二 、三个通用的随机数发生器,推荐用第三个

函数名: rand功  能: 随机数发生器用  法: void rand(void);程序例:

函数名: random
功  能: 随机数发生器
用  法: int random(int num);
程序例:

函数名: randomize     这个比较好!

功  能: 初始化随机数发生器用  法: void randomize(void);程序例:

在《计算机常用算法》中有介绍随机数的生成算法

三、如何产生设定范围内的随机数

由于rand产生的随机数从0到rand_max,而rand_max是一个很大的数,那么如何产生从X~Y的数呢?

从X到Y,有Y-X+1个数,所以要产生从X到Y的数,只需要这样写:

k=rand()%(Y-X+1)+X;

这样,就可以产生你想要的任何范围内的随机数了。

四、产生不重复的随机数

1)

2)

END

碧茂课堂精彩课程推荐:

1.Cloudera数据分析课;

2.Spark和Hadoop开发员培训;

3.大数据机器学习之推荐系统;

4.Python数据分析与机器学习实战;

详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂

现在注册互动得海量学币,大量精品课程免费送!

关注最新行业动态,

加群进行技术交流!

c++生成随机数_C 语言产生随机数的方法相关推荐

  1. c语言连续生成不同随机数_C语言随机数生成教程,C语言rand和srand用法详解

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 头文件中的 rand() 函数来生成随机数,它的用法为: int ran ...

  2. c语言产生50以内随机数,C语言产生随机数

    C语言/C++产生随机数:要用到的函数是rand(), srand()和time() 需要说明的是,iostream头文件中就有srand函数的定义,不需要再额外引入stdlib.h;而使用time( ...

  3. c语言计时纳秒_C语言中常用计时方法总结

    转自:http://blog.csdn.net/fz_ywj/article/details/8109368 C语言中常用计时方法总结 1. time() 头文件:time.h 函数原型:time_t ...

  4. c语言产生随机数_C语言 求的近似值

    点击上方"蓝字"关注我们 愉快的一天,不得不做的三件事: 种田,锄地,整代码!!! [题目] 用循环方法实现. (1)请利用"正多边形逼近"的方法求出π的近似值 ...

  5. c++中整形输入逗号_C语言输入和输出方法amp;技巧详解

    引言 今天刷题,写了好久写完了,一提交0分,改了好久没改对1分,看了一下别人的代码,又简洁又直观,代码量又少,还是满分,心理不平衡了,仔细看了一下,对输入输出的处理处理的好好.吃了这方面的亏,干脆借着 ...

  6. c语言中百分号后面跟的数字_C语言 输出百分号(%)的方法

    在C语言中,如何输出百分号呢? 很简单,只要在格式控制符里输入2个 %% 就可以了,例如: #include int main() { int a=90; printf("%d%%\n&qu ...

  7. c语言学习进阶-C语言程序实现生成指定区间指定个数随机数

    ##C语言程序实现生成指定区间指定个数随机数 设计一个自动数据生成程序,能自动生成指定行数的随机整数并写入到一个文件当中,随机整数的范围可以被控制,例如控制在0 到100 间,这个程序的操作命令行参数 ...

  8. c语言产生随机数_第四章:随机数的生成

    随机数的生成函数 C语言中有可以产生随机数据的函数,需要添加 stdlib.h 头文件与 time.h 头文件.首先在 main 函数开头加上 "srand((unsigned)time(N ...

  9. python生成指数分布随机数_Nim 语言入门之实现指数分布的随机数

    这一节,我们使用 Nim 语言来实现符合指数分布的随机数. Nim 语言是一门高效而优雅的系统级编程语言,可以编译成 C, C++, javascript 等后端. 官网如下:https://nim- ...

  10. 生成随机数c 语言,C 语言随机数生成器的实现分析

    (点击上方公众号,可快速关注) 如需转载,发送「转载」二字查看说明 本文是为了记录和澄清一个由来已久的关于C语言随机数生成器的误解. 目前所看到的所有公开的关于C随机数生成器的中文资料,都提到经典的线 ...

最新文章

  1. cent os mysql下载_Cent OS 6.4安装mysql
  2. Linux主机被黑过程和简单处理
  3. 创建一个windows服务的小程序及注意事项
  4. 【机器学习基础】前置知识(五):30分钟掌握常用Matplotlib用法
  5. boost::mpl模块实现find_if相关的测试程序
  6. 滴滴行程单用的什么字体_打车就送冰淇淋!滴滴出行放大招,限时19天
  7. 总结一些java编程题的思路
  8. 浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别
  9. 使用vs2017 作为matlab2016a b编译器 解决无法找到编译器问题【免费】
  10. java .insert_Java StringBuffer.insert 插入字符
  11. 最简短的加入收藏代码
  12. c语言串口通信实验报告,单片机串口通信实验报告总结
  13. [转]在低调中修炼自己
  14. 为什么能力越低的人,越容易产生对自己过高的评价?
  15. linux用户密码修改规则,linux怎么设置密码规则
  16. ENQUEUE_MIGRATED
  17. r语言使用linux命令,技术|如何在 Ubuntu 上安装和使用 R 语言
  18. 1:ML开篇之“驽马十驾,功在不舍”
  19. vue调用百度地图文档与说明
  20. 基于Java+Springboot+Vue+elememt美食论坛平台设计实现

热门文章

  1. 人工智能领域有哪些曾被拒稿的优秀工作?
  2. LeetCode之寻找峰值
  3. Unity3D笔记 愤怒的小鸟二 实现Play界面
  4. 阳明大神---容器时代
  5. c++ 怎么输出保留2位小数的浮点数
  6. luogu P3802 小魔女帕琪
  7. http请求与响应(content-type)
  8. [BZOJ3506] [Cqoi2014] 排序机械臂 (splay)
  9. java Android SDK安装与环境变量配置以及开发第一个Android程序
  10. EF Code First 中使用Jarek Kowalski's Provider的方法1