随机生成数,摘自算法竞赛入门经典P120-P123测试STL。

Posted 天道酬勤007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机生成数,摘自算法竞赛入门经典P120-P123测试STL。相关的知识,希望对你有一定的参考价值。

//#include<bits/stdc++.h>
#include<cstring>
#include<iostream>
#include<cstdio>
#include<time.h>///调用time的头文件。
#include<algorithm>
#include<vector>
#include<cstdlib>///调用rand的头文件。
#include<assert.h>///assert的头文件。
#define LL long long
using namespace std;

void fill_random_int(vector<int>&v,int cnt)///随机生成[0,RAND_MAX]范围内的整数。
{
    v.clear();
    for(int i = 0; i < cnt; i++){
        v.push_back(rand());
    }
}
int main()
{
    srand(time(NULL));///为了避免每次生成相同的随机序列,所以放入时间种子。每次程序运行只执行一次,放在开头即可。
    cout<<RAND_MAX<<endl;///不同编译器值可能不同,一般为2^15 - 1 =  32767
    vector<int> v;
    int cnt = 10;
    fill_random_int(v,cnt);
    for(int i = 0; i < v.size(); i++) cout<<v[i]<<" ";
    cout<<endl;
    int n = 10;
    for(int i = 0; i < v.size(); i++){
        cout<<(int)(v[i]*1.0/RAND_MAX*n)<<endl;///由于有时候要获取比RAND_MAX更大的数,可以通过这种方法。
        ///v[i]*1.0/RAND_MAX = [0,1]范围内的浮点数。然后乘以n。就是[0,n]范围内的浮点数。然后取整即可。
    }

    sort(v.begin(),v.end());
    for(int i = 0; i < v.size()-1; i++){
        assert(v[i]<=v[i+1]);///断言:assert(表达式); 表达式为真时候正常运行,为假时候,终止程序,并打印出错误信息。
    }
    return 0;
}

 

以上是关于随机生成数,摘自算法竞赛入门经典P120-P123测试STL。的主要内容,如果未能解决你的问题,请参考以下文章

《算法竞赛入门经典》4.13应用举例-孪生素数

算法竞赛入门经典7.3子集生成增量构造法位向量法二进制法

《算法竞赛入门经典(第二版)》习题解答——第二章

算法入门竞赛经典7.2枚举排列

《算法竞赛入门经典(第2版)》pdf下载在线阅读,求百度网盘云资源

2021算法竞赛入门班第一节课枚举贪心习题