note-20201108

2020-11-08 | Share to Twitter

随机数据生成

srand((int) time(0));
/*[0,b] -->*/ rand()%100;
/*[a,b) -->*/ rand()%(b-a) + a;
/*[a,b] -->*/ rand()%(b-a) + 1 + a;
/*(a,b] -->*/ rand()%(b-a) + 1 + a;
/*[0,1] -->*/ rand()/double(RAND_MAX);

文件输入输出、常用模板(?)

// 驼峰事坏文明,,,
#include <bits/stdc++.h>
#define fName "<file-name>"
const int myArrN = 10;
const int myA = 0;
const int myB = RAND_MAX;
int a[myArrN];

bool cmp(int a, int b)
{
    return a>b;
}

using namespace std;

int main()
{
    freopen(fName, "w", stdout);
    srand((int) (time(0)));
    int n=myArrN;
    for(int i=0; i<n; i++)
    {
        a[i] = rand()%(myB-myA) + myA;
    }
    sort(a,a+n,cmp); (需要有序数据时,cmp可选)
    // 去重(chong)  
    // 去重需要先将数组变为有序的,把重复的数据放到数组最后,返回不重复最后一个数的地址
    n = unique(a,a+n)-a;
    random_shuffle(a,a+n); // 打乱数组
    printf("%d\n", n);
    for(int i=0; i<n; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    fclose(stdout);
    return 0;
}

对于排序最差情况(如全部逆序),则可以先随机打乱数组再进行排序