• C++ 用随机数(rand)测试代码的方法


    cstdlib中的rand()可生成闭区间[0,RAND_MAX]内均匀分布的随机整数,其中RAND_MAX至少为32767如果要生成更大的随机整数,在精度要求的情况下可以用rand()结果“放大”得到。

    所谓的放大就是执行rand()之后先除以RAND_MAX,得到[0,1]之间的随机实数,扩大n倍之后四舍五入,得到[0,n]之间的均匀整数。

    #include<iostream>
    #include<vector>
    #include<cstdlib>
    using namespace std;
    void fill_random_int(vector<int>& v,int cnt,int n){
    	v.clear();
    	for(int i = 0;i < cnt;i++)
    		v.push_back(rand()*1.0/RAND_MAX*n);
    }
    int main()
    {
    	vector<int> a;
    	fill_random_int(a,100,1000);
    	for(int i = 0;i < a.size();i++)
    		cout<< a[i]<<" ";
    	return 0;
    } 

    如果不调用srand而直接调用rand(),相当于调用过一次srand(1),因此程序每次执行时,将得到同一套随机数。如果想得到不同的随机数,可以通过改变srand(x)中的x来改变随机数种子。如下:

    #include<iostream>
    #include<vector>
    #include<cstdlib>
    using namespace std;
    void fill_random_int(vector<int>& v,int cnt,int n){
    	v.clear();
    	for(int i = 0;i < cnt;i++)
    		v.push_back(rand()*1.0/RAND_MAX*n);
    }
    int main()
    {
    	vector<int> a;
    	srand(2);//用来获得一组随机数种子。
    	fill_random_int(a,10,10);
    	for(int i = 0;i < a.size();i++)
    		cout<< a[i]<<" ";
    	return 0;
    } 
  • 相关阅读:
    springboot 定制错误页面
    Maven私有仓库-使用docker部署Nexus
    centos7 sentry部署指南
    静态文件服务器部署指南
    开始使用ansible
    2016项目开发经验总结及后续计划
    WPF 3D模型 3D场景
    压缩日志的方法
    创建动态视图
    如何 ︰ 执行批量更新和插入使用.NET 提供程序在 C#.NET OpenXML
  • 原文地址:https://www.cnblogs.com/long98/p/10352251.html
Copyright © 2020-2023  润新知