随机生成数,摘自算法竞赛入门经典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;
}

 

posted on 2017-05-15 12:59  hnust_accqx  阅读(284)  评论(0编辑  收藏  举报

导航