//随机数的几个板子(蓝书上的)

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;
}

以上是关于//随机数的几个板子(蓝书上的)的主要内容,如果未能解决你的问题,请参考以下文章

计算几何模板(未完待续)

PHP中的几个随机数生成函数

使 PHP 代码更加简洁的几个小技巧

JS产生随机数的几个用法!

生成随机数的几个总结

JS产生随机数的几个用法