首页 > 其他分享 >随机函数

随机函数

时间:2022-11-15 15:47:57浏览次数:54  
标签:std rand 函数 RAND int MAX 随机

头文件 #include<cmath>

rand()返回一随机数值的范围在0至RAND_MAX 间。RAND_MAX的范围最少是在32767之间(int)。0~RAND_MAX每个数字被选中的机率是相同的。 rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。  

C++产生随机数

rand() % 10 + 1;       //1-10

 

rand()产生的随机数在每次运行的时候都是与上一次相同的。若要不同,用函数srand()初始化它。可以利用srand((unsigned int)(time(NULL))的方法,产生不同的随机数种子,因为每一次运行程序的时间是不同的。


要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)

 

 

 

#include<cmath> 
#include<algorithm>     // std::shuffle
#include <random>       // std::default_random_engine
#include <chrono>       // std::chrono::system_clock   

    // ------------ 随机函数 ------------ 
    // rand()返回一随机数值的范围在0至RAND_MAX 间。RAND_MAX的范围最少是在32767之间(int)。0~RAND_MAX每个数字被选中的机率是相同的。
    // rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。
    cout << rand() << endl;
    cout << rand() << endl;
    cout << rand() << endl;
    cout << endl;

    // 伪随机数
    // 1. 给srand()提供一个种子
    srand(time(NULL));
    for (size_t i = 0; i < 10; i++)
    {
        // 2.调用rand(),它会根据srand()提供的种子值返回一个随机数
        int secret = rand() % 10;
        cout << "secret : " << secret << endl;
    }

    cout << endl << endl;

    // 产生k个不重复的随机数
    // 方法1. random.shuffle(lst)[:k]
    // algorithm.h里面的一个函数
    vector<int> arr;
    int N = 100000, K = 20;
    for (int i = 0; i < N; ++i)
        arr.push_back(i + 1);
    
    // std::shuffle是从C++11之后才开始出现,必须与随机数生成器一起使用。
    // 需要注意的是,std::random_shuffle在 C++14 中弃用, C++17 中移除。所以推荐使用std::shuffle。
    // random_shuffle(arr.begin(), arr.end());
    unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
    shuffle(arr.begin(), arr.end(), std::default_random_engine(seed));
    for (int i = 0; i < K; i++)
        cout << arr[i] << " ";
    cout << endl;

 

标签:std,rand,函数,RAND,int,MAX,随机
From: https://www.cnblogs.com/zijidan/p/16892593.html

相关文章

  • 狂神说Go语言笔记—Go函数详解
    什么是函数函数是基本的代码块,用于执行一个任务Go语言最少有个main()函数你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务函数声明告诉了编译器函数的......
  • js函数式编程讲解
    什么是函数式编程是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简......
  • 11.函数
    方法作用域闭包生命周期函数的声明......
  • 461. 汉明距离 ------ 位运算,二进制,异或求不同、内置函数、Brian Kernighan 算法
    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给你两个整数x和y,计算并返回它们之间的汉明距离。 示例1:输入:x=1,y=4输出:2解释:1......
  • python当中匿名函数lambda使用
    什么是匿名函数?匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。在python中,不通过def来声明函数名字,而是通......
  • PyTorch常用5个抽样函数
    PyTorch是一个开源的深度学习框架,它提供了一个用于高级特性的Python包。在本文中,我们将介绍PyTorch中的常见抽样函数。抽样是一个统计过程,它从总体中提取一个子集,通过子集......
  • C++面经 : C++ 11 新特性(闭包与匿名函数) ----C++ Closure & C++ anonymous functions
    关于C++Closure闭包和C++anonymousfunctions匿名函数什么是闭包?在C++中,闭包是一个能够捕获作用域变量的未命名函数对象,它包含了需要使用的“上下文”(函数......
  • 钩子函数
    控制子类的的创建1、元类这种方式可能是最常见的也是我们最先知晓的,当然这种方式可能需要我们对元类有比较深入的了解,所以引入了下面的这种方式2、钩子函数__i......
  • 箭头函数
    注意:发送网络请求时,回调函数必须要使用箭头函数。<script> functionf1(name,age){console.log(name,age);}f1("失败",99);//箭头函数let......
  • 【Java】生成随机字符串
    packagecom.runsky.utils;importjava.util.Random;publicclassGetRandom{privatestaticfinalString[]GENERATE_SOURCE=newString[]{"0","1","2",......