Login / Get an account Logout
  • view
  • edit
  • history
  • discuss

template/zhongzihao/random

// 随机数模板 

#include<bits/stdc++.h>
#define ll long long

// 产生一个 [0, n) 的随机数 
int randint(int n){
	return (rand() << 15 | rand()) % n;
}

// 产生一个 [0, n) 的随机数
ll randll(ll n){
	return (1ll * rand() << 45 | 1ll * rand() << 30 | rand() << 15 | rand()) % n;
}

// 产生一个整数部分 digit 位,小数部分 scale 位的实数 
double randdb(int digit, int scale){
	double ret = 0;
	for (int i = 0; i < digit; ++ i){
		ret = ret * 10 + randint(10);
	}
	double now = 0.1;
	for (int i = 0; i < scale; ++ i, now /= 10){
		ret = ret + randint(10) * now;
	}
	return ret;
}

// 产生一个小写字母 
char randlower(){
	return 'a' + randint(26);
}

// 产生一个大写字母 
char randupper(){
	return 'A' + randint(26);
}

// 产生一个数字字符 
char randdigit(){
	return '0' + randint(10);
}

// 产生一个字母或数字字符 
char randchar(){
	int x = randint(3);
	switch (x){
		case 0 : return randlower();
		case 1 : return randupper();
		case 2 : return randdigit();
	}
}

// 产生一个 digit 位的大整数(直接输出) 
void randBigInteger(int digit){
	for (int i = 0; i < digit; ++ i){
		putchar('0' + (i ? randint(10) : randint(9) + 1));
	}
}

int main(){
	srand((unsigned) time(NULL));
	return 0;
}
京ICP备17037022号
Site
  • Front page
  • All pages
  • Categories
  • Random page
  • Recent activity
  • Upload a file
  • Help
This page
  • Raw page source
  • Printable version
  • Delete this page