c++实现简单随机数的代码

 更新时间:2021年05月23日 11:32:01   作者:Zycc++  
在本篇文章里小编给大家整理的是一篇关于c++实现简单随机数的代码内容,有需要的朋友们可以跟着学习下。

c++简单随机数

#include<iostream>
#include<ctime>
#include<cstdlib> 
using namespace std;
int random(int n)
{
	return (long long)rand()*rand%n; 
}

int main()
{
	srand(unsigned(time(0)));
	//
	//求负数随机数,先产生0-2n之间的随机整数,再减去n就得到了-n - n 之间的数
	  
}

实例扩展:

随机数引擎都需要一个种子,生成的都是伪随机数。

引擎适配器可以套一个随机数引擎:

  • discard_block_engine在连续若干个伪随机数中选择若干个;
  • independent_bits_engine把位数多的伪随机数压缩成位数少的;
  • shuffle_order_engine把连续若干个伪随机数重排。

套娃的方式是模板,理论上你还可以用适配器套适配器,不过CPU可能会有意见。

随机数引擎的模板参数怎么取?标准定义了一些数学家们发现的效果良好的随机数引擎:LCG minstd_rand0、minstd_rand、knuth_b;MT mt19937、mt19937_64;LFG ranlux24_base、ranlux48_base、ranlux24、ranlux48。如果你还是无从下手,那就用default_random_engine,编译器的开发者们为你选好了他们认为最合适的,在MSVC中是mt19937,在GCC中是minstd_rand0。

以上工具都生成伪随机数,标准还定义了真·随机数引擎random_device,尽管标准也允许它是伪随机的。如果它是真随机的,那么使用起来它的效果无疑是最好的,但是多次调用后性能会急剧下降,通常只用于生成伪随机数引擎的种子。

随机数生成器类型都定义了静态方法min和max,返回生成的随机数的范围,以及无参数的函数调用运算符operator(),返回随机数。

#include <iostream>
#include <random>

int main()
{
  auto engine = std::default_random_engine(std::random_device()());
  std::cout << "min = " << engine.min() << "; max = " << engine.max() << std::endl;
  std::cout << "random numbers: ";
  for (int i = 0; i != 10; ++i)
    std::cout << engine() << ' ';
  std::cout << std::endl;
}

到此这篇关于c++实现简单随机数的代码的文章就介绍到这了,更多相关c++简单随机数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言实现抢红包算法

    C语言实现抢红包算法

    这篇文章主要为大家详细介绍了C语言抢红包算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • Pipes实现LeetCode(194.转置文件)

    Pipes实现LeetCode(194.转置文件)

    这篇文章主要介绍了Pipes实现LeetCode(194.转置文件),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)

    c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)

    通过C++方式,建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle 求出面积并获取相关信息
    2020-11-11
  • C++char类型和输入输出优化

    C++char类型和输入输出优化

    这篇文章主要介绍了C++char类型和输入输出优化,char的全称是character,也就是字符的意思。顾名思义,char类型是专门为了存储字符而设计的。下面我们一起来看看文章的具体内容吧
    2021-11-11
  • C语言实现页面置换算法(FIFO、LRU)

    C语言实现页面置换算法(FIFO、LRU)

    这篇文章主要介绍了通过C语言实现的两种页面置换算法:先进先出(FIFO)页面置换算法和最近最久未使用(LRU)页面置换算法。文中的代码具有一定的学习或工作价值,快来跟随小编学习一下吧
    2021-12-12
  • C/C++读取配置文件的方式小结

    C/C++读取配置文件的方式小结

    这篇文章主要为大家详细介绍了C/C++中读取配置文件的几种常见方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • java string对象上的操作,常见的用法你知道吗

    java string对象上的操作,常见的用法你知道吗

    今天给大家带来的是关于Java的相关知识,文章围绕着Java String类用法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-08-08
  • EasyC++编写头文件

    EasyC++编写头文件

    这篇文章主要介绍了C++编写头文件,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码,感兴趣的小伙伴一起来看下面文章的详细介绍吧
    2021-12-12
  • C语言 详细讲解接续符和转义符的使用

    C语言 详细讲解接续符和转义符的使用

    接续符是用来告诉编译器行为的符号,那编译器遇到接续符是什么行为呢,就是去掉接续符,然后把下一行连接到现在这行上面,转义符是主要用于表示无回显字符,也用于表示常规字符,转义符必须放在单引号或者双引号里面
    2022-04-04
  • Qt creator中项目的构建配置和运行设置的步骤

    Qt creator中项目的构建配置和运行设置的步骤

    使用 Qt Creator 集成开发环境构建和运行程序是一件非常简单的事情,一个按钮或者一个快捷键搞定全部,本文主要介绍了Qt creator中项目的构建配置和运行设置的步骤,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论