转载自**

https://www.cnblogs.com/ql698214/p/5424937.html

**
一、使用rand()函数
头文件<stdlib.h>

(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。

例如:

#include<stdio.h>
#include<stdlib.h>
void main()
{for(int i=0;i<10;i+)printf("%d/n",rand());
}

(2) 如果你要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数

x = rand()%11; /产生1~10之间的随机整数/

y = rand()%51 - 25; /产生-25 ~ 25之间的随机整数/

z = ((double)rand()/RAND_MAX)*(b-a) + a;/产生区间[a,b]上的随机数/

#include<iostream>
#include<stdlib.h>using namespace std;#define random(x) (rand()%x)void main() {   for (int i = 0; i < 10; i++) {cout << random(10) << " ";}cout << endl;system("pause");
}

(3)但是上面两个例子所生成的随机数都只能是一次性的,如果你第二次运行的时候输出结果仍和第一次一样。这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。

srand()函数定义 : void srand (unsigned int seed);

通常可以利用geypid()或time(0)的返回值来当做seed,如果你用time(0)的话,要加入头文件#include<time.h>

#include<iostream>
#include<stdlib.h>
#include<time.h>using namespace std;#define random(x) (rand()%x)void main() {   srand((int)time(0));for (int i = 0; i < 10; i++) {cout << random(10) << " ";}cout << endl;system("pause");
}

1
(4)随机产生(a,b)区间内的随机数

#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<iomanip>
using namespace std;
#define random(a,b) (((double)rand()/RAND_MAX)*(b-a)+a)void main() {   srand((int)time(0));for (int i = 0; i < 100; i++) {      cout << random(0, 10) << " ";}cout << endl;system("pause");
}

1
(5)四舍五入,返回整数,通过floor和ceil函数实现

#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<iomanip>
using namespace std;/*四舍五入,返回整数*/
double round(double r)
{return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}
double randomRange(double a, double b)
{   double x = (double)rand() / RAND_MAX;double result = x*(b - a) + a;return round(result);
}void main() {   srand((int)time(0));for (int i = 0; i < 100; i++) {//cout << fixed << setprecision(0) << randomRange(0, 10) << " ";cout << randomRange(0, 10) << " ";}cout << endl;system("pause");
}

henry
好文要顶 关注我 收藏该文

C++如何产生随机数相关推荐

  1. js生成随机数函数,倒计时函数

    生成xxxx-xxxx-xxxx-xxxx形式的随机数 function randomString(n) {let chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmn ...

  2. Python:numpy实现生成随机数,忽略warnings

    ''' 作者:Dust ''' # 生成随机数:numpy下的random import numpy as npy import warnings warnings.filterwarnings(&q ...

  3. python中的随机函数怎么用_Python中随机数的使用方法有那些?

    随机数功能 1. choice(seq) 此处的 seq 必须是有序的序列,返回序列中的一个随机项. from random import * c1 = choice([1, 2, 3, 4, 5]) ...

  4. 量子计算机真随机数,量子真随机数发生器研究取得进展

    量子真随机数发生器研究取得进展 超高速真随机数发生器简化设计方案(上)与后处理方法(下) 信息科学技术学院郭弘教授课题组与物理学院张建玮副教授课题组开展合作,在用光学随机源设计研制量子真随机数发生器的 ...

  5. python中random模块中包含了随机数相关的功能函数_Python中random模块生成随机数详解...

    print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20 print random.randint(20, 20) #结果永远是20 #pr ...

  6. c++11随机数产生器default_random_engine

    c/c++老版本的rand()存在一定的问题,在转换rand随机数的范围,类型或者分布时,常常会引入非随机性. 定义在<random> 中的随机数库通过一组协作类来解决这类问题:随机数引擎 ...

  7. 华为笔试题---明明的随机数

    题目 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着 ...

  8. 【C++】random随机数与【C++11】/rand()和srand()的用法

    文章目录 随机数 1. c++ 11 random随机数的使用(推荐使用) 1.1 1.2 1.3 1.4 2.1 C++中随机函数rand()和srand()的用法(老本版) 2.2 限制随机数的范 ...

  9. OpenCV 【十六】RNG随机数发生器putText绘制文字

    1 目的 使用 随机数发生器类 (RNG) 并得到均匀分布的随机数. 通过使用函数 putText 显示文字. 第一步是实例化一个 Random Number Generator(随机数发生器对象) ...

  10. ASP.net随机数应用实例

    家可能都用过Chinaren的校友录,不久前它的留言簿上加了一个防止灌水的方法,就是系统每次产生一个由随机的数字和字母组成的图片,每次留言必须正确地输入这些随机产生的字符,否则不能添加留言.这是一个很 ...

最新文章

  1. R语言可视化绘制及PDF使用字体参数列表:查看字体列表、可视化绘制图像中的字体参数列表、字体示例并写入pdf
  2. ubuntu14.04.5装cuda7.5记录(解决unable to locate the kernel source,装cuda黑屏问题,装cuda循环登录问题)
  3. 些许注意事项(初学)
  4. 浅谈CMMI几个过程概念流程管理 (转)
  5. Building Android App Without an IDE
  6. make 调试和传参
  7. linux 命令tar,Linux下tar命令详解
  8. 关于商品分类 商品表和属性表的设计
  9. java服务器和linux_在Linux下开一个Java服务器(使用CatServer Pro)
  10. 母版页的优点,及母版页与内容页中相互访问方法
  11. java eclipse参考文献_2019-2020年java毕设论文参考文献.doc
  12. 腾达无线usb wifi 网卡u1/u3 RTL8192EU在centos7.6/7.7的编译适配
  13. matlab排序函数 下标,[转载]MATLAB中的排序函数
  14. 【原创】【android逆向系列】1:真机(小米note 3)root(从本人简书博客移入)
  15. win7上的截图小工具
  16. JavaScript (递归函数)
  17. week8—多线程下载多个网页文件
  18. 带你了解现有UWB技术及原理
  19. Android开发收音机功能,基于Android系统的FM收音机功能的设计与实现
  20. Linux网络管理—brctl命令

热门文章

  1. 前端学习(976):阿里百秀轮播图制作
  2. mybatis学习(33):动态sql if
  3. 第二十七期:德国工业4.0眼里“工业互联网”与“智能制造”
  4. java学习(142):file类的基本创建
  5. CSS之viewports剖析
  6. 计算机win7内容已满,Win7旗舰版电脑C盘满了怎么清理
  7. java中文处理_Java的中文乱码处理
  8. java圆形进度条_可拖拽圆形进度条组件(支持移动端)
  9. .Net Core 3.0依赖注入替换 Autofac
  10. 使用Canal实现redis和mysql的同步