#工具:格式化随机数据发生
Posted maoruimas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#工具:格式化随机数据发生相关的知识,希望对你有一定的参考价值。
支持单区间随机数输出、同区间随机数重复输出、普通数据直接输出、一组数据重复输出、修改输出文件、随机字符串输出
[a,b]
输出区间[a,b]内的随机数。[a,b]*n
输出n个区间[a,b]内的随机数。[a,b]*[na,nb]
输出n个区间[a,b]内的随机数。n是区间[na,nb]内的随机数。<c1,c2>
输出一个ASCII码在字符c1和c2(包含c1和c2)的字符。<c1,c2>*n
输出n个ASCII码在字符c1和c2(包含c1和c2)的字符,即长为n的字符串。<c1,c2>*[na,nb]
输出n个ASCII码在字符c1和c2(包含c1和c2)的字符,即长为n的字符串。n是区间[na,nb]内的随机数。{...}*n
将花括号内的命令重复执行n次。*n
可以省略,表示执行一次。{
和}*n
必须与其他命令用空白字符隔开。{...}*[na,nb]
将花括号内的命令重复执行n次。{
和}*[na,nb]
必须与其他命令用空白字符隔开。n是区间[na,nb]内的随机数。xxx.txt
将输出文件重定向为xxx.txt(默认输出文件为".Input.txt")。重定向为同一文件相当于把文件清空。EOF
表示命令的终止- 不符合以上格式的输入被视作普通数据,不做处理直接输出
- 以上命令都应两两用空白字符隔开
- 除同区间随机数重复输出会在一行内输出数据外,其他操作的输出都以换行符隔开
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define ms(arr,a) memset(arr,a,sizeof arr)
#define debug(x) cout<<"< "#x" = "<<x<<" >"<<endl
const int maxn=1e2+5;
char s[maxn][maxn];
int sum;
void solve(int l,int r,int times)
{
while(times--)
{
for(int i=l;i<=r;i++)
{
if(strstr(s[i],".txt")){freopen(s[i],"w",stdout);continue;}
if(s[i][0]==‘{‘)
{
int lft=i,cnt=1;
while(cnt)
{
i++;
if(s[i][0]==‘{‘)cnt++;
else if(s[i][0]==‘}‘)cnt--;
}
int t=1;
int nl,nr;
if(strlen(s[i])>1)
{
if(s[i][2]==‘[‘)
{
sscanf(s[i],"}*[%d,%d]",&nl,&nr);
t=rand()%(nr-nl+1)+nl;
}
else sscanf(s[i],"}*%d",&t);
}
solve(lft+1,i-1,t);
continue;
}
if(s[i][0]==‘[‘)
{
int lft,rgt,t=1;
char *pos;
int nl,nr;
if(pos=strstr(s[i],"*"))
{
if(*(pos+1)==‘[‘)
{
sscanf(s[i],"[%d,%d]*[%d,%d]",&lft,&rgt,&nl,&nr);
t=rand()%(nr-nl+1)+nl;
}
else sscanf(s[i],"[%d,%d]*%d",&lft,&rgt,&t);
}
else sscanf(s[i],"[%d,%d]",&lft,&rgt);
while(t--)printf("%d ",rand()%(rgt-lft+1)+lft);
printf("
");
}
if(s[i][0]==‘<‘)
{
char lft,rgt;int t=1;
char *pos;
int nl,nr;
if(pos=strstr(s[i],"*"))
{
if(*(pos+1)==‘[‘)
{
sscanf(s[i],"<%c,%c>*[%d,%d]",&lft,&rgt,&nl,&nr);
t=rand()%(nr-nl+1)+nl;
}
else sscanf(s[i],"<%c,%c>*%d",&lft,&rgt,&t);
}
else sscanf(s[i],"<%c,%c>",&lft,&rgt);
while(t--)printf("%c",rand()%(rgt-lft+1)+lft);
printf("
");
}
else printf("%s
",s[i]);
}
}
}
int main()
{
freopen("Input.txt","w",stdout);
srand((unsigned)time(NULL));
while(~scanf("%s",s[++sum]))if(strstr(s[sum],"EOF"))break;
solve(1,sum-1,1);
}
以上是关于#工具:格式化随机数据发生的主要内容,如果未能解决你的问题,请参考以下文章
当另一个片段中的数据发生更改时,如何刷新一个片段中的 RecyclerView