//随机数的几个板子(蓝书上的)
Posted 。✧* ꧁王者꧂✧*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了//随机数的几个板子(蓝书上的)相关的知识,希望对你有一定的参考价值。
随机生成整数序列:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int ra(int mo)
{ return 1ll * rand() * rand() % mo; }
int main()
{
srand(time(0));
int n = ra(100000) + 1;
int m = 1000000000;
for(int i = 1 ; i <= n ; i ++)
a[i] = ra(2 * m + 1) - m;
return 0;
}
随机生成区间列:
#include<bits/stdc++.h>
using namespace std;
int ra(int mo)
{ return 1ll * rand() * rand() % mo + 1; }
int n , m;
int main()
{
cin >> n >> m;
srand(time(0));
for(int i = 1 ; i <= m ; i ++)
{
int l = ra(n);
int r = ra(n);
if(l > r)
swap(l , r);
printf("%d %d\\n" , l , r);
}
return 0;
}
随机生成树
#include<bits/stdc++.h>
using namespace std;
int ra(int mo)
{ return 1ll * rand() * rand() % mo + 1; }
int n , m;
int main()
{
cin >> n;
srand(time(0));
for(int i = 2 ; i <= n ; i ++)
{
int x = ra(i - 1);
int val = ra(1000000000);
printf("%d %d %d\\n" , x , i , val);
}
return 0;
}
随机生成图
=#include<bits/stdc++.h>
using namespace std;
const int N = 5e6 + 10;
int ra(int mo)
{ return 1ll * rand() * rand() % mo + 1; }
int n , m;
pair<int , int > e[N];
map<pair<int , int > , bool > h;
int main()
{
cin >> n >> m;
srand(time(0));
for(int i = 1 ; i < n ; i ++)
{
int x = ra(i);
e[i] = make_pair(x , i + 1);
h[e[i]] = h[make_pair(i + 1 , x)] = 1;
}
for(int i = n ; i <= m ; i ++)
{
int x , y;
do{
x = ra(n) , y = ra(n);
}while(x == y || h[make_pair(x , y)]);
e[i] = make_pair(x , y);
h[e[i]] = h[make_pair(y , x)] = 1;
}
random_shuffle(e + 1 , e + m + 1);
for(int i = 1 ; i <= m ; i ++)
printf("%d %d\\n" , e[i].first , e[i].second);
return 0;
}
以上是关于//随机数的几个板子(蓝书上的)的主要内容,如果未能解决你的问题,请参考以下文章