iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++产生随机数的几种方法小结
  • 890
分享到

C++产生随机数的几种方法小结

C++产生随机数C++随机数 2023-03-09 17:03:39 890人浏览 泡泡鱼
摘要

目录使用cstdlib库1)使用srand()撒一个种子2)使用rand()产生随机数3)控制随机数范围4)示例代码使用random库:c++11 random library随机数

使用cstdlib库

C++11之前,C和C++都用相同的方法来产生随机数(伪随机数),即rand()函数,用法如下:

1)使用srand()撒一个种子

功能:初始化随机数发生器

用法:void srand(unsigned int seed)

2)使用rand()产生随机数

功能:随机数发生器

用法:int rand(void)

3)控制随机数范围

要取得 [a,b) 的随机整数,使用 (rand() % (b-a))+ a;

要取得 [a,b] 的随机整数,使用 (rand() % (b-a+1))+ a;

要取得 (a,b] 的随机整数,使用 (rand() % (b-a))+ a + 1;

** 参考:C++ rand 与 srand 的用法

4)示例代码

#include <iOStream>
#include <ctime>
#include <cstdlib>
 
int getRand(int min, int max);
 
int main() {
 
    srand(time(0));
 
    for (int i=0; i<10; i++) {
        int r = getRand(2,20);
        std::cout << r << std::endl;
    }
 
    return 0;
}
 
// 左闭右闭区间
int getRand(int min, int max) {
    return ( rand() % (max - min + 1) ) + min ;
}

使用random库:c++11 random library

C++11之前,无论是C,还是C++都使用相同方式的来生成随机数,而在C++11中提供了随机数库,包括随机数引擎类、随机数分布类,简介如下:

随机数引擎类

一般使用 default_random_engine 类,产生随机非负数(不推荐直接使用)

直接使用时:

#include <iostream>
#include <ctime>
#include <random>
 
int main() {
 
    std::default_random_engine e;
    e.seed(time(0));
 
    for (int i=0; i<10; i++) {
        std::cout << e() << std::endl;
    }
 
    return 0;
}

输出结果:

16807
282475249
1622650073
984943658
1144108930
470211272
101027544
1457850878
1458777923
2007237709

随机数分布类

uniform_int_distribution:产生均匀分布的整数

示例代码:

#include <iostream>
#include <ctime>
#include <random>
 
int main() {
 
    std::default_random_engine e;
    std::uniform_int_distribution<int> u(2,20); // 左闭右闭区间
    e.seed(time(0));
 
    for (int i=0; i<10; i++) {
        std::cout << u(e) << std::endl;
    }
 
    return 0;
}

输出结果:

4
5
16
17
15
17
6
10
13
13

uniform_real_distribution:产生均匀分布的实数

#include <iostream>
#include <ctime>
#include <random>
 
int main() {
 
    std::default_random_engine e;
    std::uniform_real_distribution<double> u(1.5,19.5); // 左闭右闭区间
    e.seed(time(0));
 
    for (int i=0; i<10; i++) {
        std::cout << u(e) << std::endl;
    }
 
    return 0;
}

输出结果:

11.9673
2.29179
9.82668
9.82764
10.2394
13.8324
2.95336
9.72177
16.5145
12.1421

normal_distribution:产生正态分布的实数

示例代码:

#include <iostream>
#include <ctime>
#include <random>
 
int main() {
 
    std::default_random_engine e;
    std::normal_distribution<double> u(0,1); // 均值为0,标准差为1
    e.seed(time(0));
 
    for (int i=0; i<10; i++) {
        std::cout << u(e) << std::endl;
    }
 
    return 0;
}

输出结果:

0.390995
-0.680137
-1.02953
-0.53243
0.375886
-0.19804
-0.796159
0.837714
0.899632
2.06609

bernoulli_distribution:生成二项分布的布尔值

#include <iostream>
#include <ctime>
#include <random>
 
int main() {
 
    std::default_random_engine e;
    std::bernoulli_distribution u(0.8); // 生成1的概率为0.8
    e.seed(time(0));
 
    for (int i=0; i<10; i++) {
        std::cout << u(e) << std::endl;
    }
 
    return 0;
}

输出结果:

1
0
1
1
1
1
1
1
1
1

参考:C++11新特性(75)-随机数库(Random Number Library)

到此这篇关于C++产生随机数的几种方法小结的文章就介绍到这了,更多相关C++产生随机数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++产生随机数的几种方法小结

本文链接: https://www.lsjlt.com/news/199119.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++产生随机数的几种方法小结
    目录使用cstdlib库1)使用srand()撒一个种子2)使用rand()产生随机数3)控制随机数范围4)示例代码使用random库:c++11 random library随机数...
    99+
    2023-03-09
    C++产生随机数 C++ 随机数
  • numpy产生随机数的几种方法
    目录1.np.random.rand 生成一个0到1之间的均匀分布2.np.random.randn 返回一个符合标准正态分布的数组。3.np.random.randint返回一定范...
    99+
    2023-02-10
    numpy 产生随机数 numpy 生随机数
  • C++产生随机数的方法有哪些
    这篇文章主要介绍“C++产生随机数的方法有哪些”,在日常操作中,相信很多人在C++产生随机数的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++产生随机数的方法有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • shell产生随机数七种方法的实现
    一、问题 Shell下有时需要使用随机数,在此总结产生随机数的方法。计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数)。伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产生算法将可以产生一...
    99+
    2022-06-04
    shell 随机数
  • Python生成随机数组的方法小结
    本文实例讲述了Python生成随机数组的方法。分享给大家供大家参考,具体如下: 研究排序问题的时候常常需要生成随机数组来验证自己排序算法的正确性和性能,今天把Python生成随机数组的方法稍作总结,以备以后...
    99+
    2022-06-04
    数组 小结 方法
  • php产生随机数的两种方法实例代码 输出随机IP
    分享下php生成随机数的三种方法,生成1-10之间的不重复随机数,php生成不重复随机数的例子,需要的朋友参考下。 如何用php生成1-10之间的不重复随机数? 例1,使用shuff...
    99+
    2022-11-21
    php 随机数
  • PHP 生成随机数的 5 种方式,你知道几种
    我知道五种PHP生成随机数的方式:1. 使用rand()函数:rand()函数可以生成一个指定范围内的随机整数。例如,生成1到10之...
    99+
    2023-09-21
    PHP
  • win8系统关机的几种方法小结
      系统关机很难吗?一点儿也不难!但如果你是第一次使用Win8系统,找到系统关机按钮可就没那么容易,说的一点儿都不夸张,因为Win8系统取消了开始菜单,从前你经常使用的那个关机、重启已经不在那儿了!当你一...
    99+
    2022-06-04
    小结 几种方法 系统
  • java生成随机数的三种方法
    随机数有三种生成方式:通过Math.random()方法通过System.currentTimeMillis()方法获取毫秒数通过Random类第一种:常用方法Math.random()方法,是获取0-1之间的double类型的小数,在通过...
    99+
    2014-08-11
    java入门 java 随机数
  • java中产生随机不重复数的方法
    java中产生随机不重复数的方法:根据min和max,生成n个不重复的随机数。(注:范围[min,max],n ...
    99+
    2021-01-15
    java
  • Pytorch常用的4种随机数生成方法
    Pytorch常用的4种随机数生成方法 一、torch.rand():构造均匀分布张量的方法二、torch.randn():构造标准正态分布张量的方法三、torch.randint():构造区...
    99+
    2023-09-21
    pytorch python 随机数
  • shell 生成随机数的实现方法总结
    shell 生成随机数的实现方法总结 1. 使用系统的 $RANDOM 变量 mimvp@ubuntu:~$ echo $RANDOM 17617 $RANDOM 的范围是 [0, 32767] 如...
    99+
    2022-06-04
    随机数 方法 shell
  • Python中取整的几种方法小结
    前言 对每位程序员来说,在编程过程中数据处理是不可避免的,很多时候都需要根据需求把获取到的数据进行处理,取整则是最基本的数据处理。取整的方式则包括向下取整、四舍五入、向上取整等等。下面就来看看在Python...
    99+
    2022-06-04
    小结 中取 几种方法
  • PHP中利用rand()函数产生一个随机数的方法
    这篇文章主要介绍了PHP中利用rand()函数产生一个随机数的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php的框架有哪些php的框架:1、Laravel,Larav...
    99+
    2023-06-14
  • Python和C/C++交互的几种方法总结
    前言 python作为一门脚本语言,其好处是语法简单,很多东西都已经封装好了,直接拿过来用就行,所以实现同样一个功能,用Python写要比用C/C++代码量会少得多。但是优点也必然也伴随着缺点(这是肯定的,...
    99+
    2022-06-04
    几种方法 Python
  • Java 生成随机数的 5 种方式
    1. 使用Math类的random()方法生成0到1之间的随机数:```javadouble randomNum = Math.ra...
    99+
    2023-09-20
    Java
  • java的三种随机数生成方式
    随机数的产生在一些代码中很常用,也是我们必须要掌握的。而java中产生随机数的方法主要有三种:第一种:new Random()第二种:Math.random()第三种:currentTimeMillis()第一种需要借助java.util....
    99+
    2015-06-20
    java教程 java
  • java生成不重复的随机数方法总结
    本文给大家介绍如何在JAVA中实现随机无重复数字的功能。(相关视频课程推荐:java视频教程)为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复。在这里呢,...
    99+
    2018-12-23
    java
  • JavaScript对象合并的几种方法小结
    目录1、使用 Object.assign() 方法2、使用解构赋值语法3、使用 Lodash 中的 merge() 方法4、for-in 循环 + 手动赋值5、使用 Object.k...
    99+
    2023-02-17
    JavaScript 对象合并
  • Python统计词频的几种方法小结
    目录方法一:运用集合去重方法方法二:运用字典统计方法三:使用计数器本文介绍python统计词频的几种方法,供大家参考 方法一:运用集合去重方法 def word_count1(wo...
    99+
    2023-03-01
    Python统计词频 Python 文本词频统计
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作