随机产生字符串
最近做一个 trainning,一位大牛给的任务.请高手帮忙.
题目:产生随机的的字符串
要求:1.字符串中的每个字母是随机的.2.字符串的长度很大,考虑2个G的情况.3.字符串的产生速度要快,不能一个字符一个字符产生.
大牛给的提示: 长度很长,且随机的字符串在数据加秘算法中经常用到,可以利用字典的方法快速产生随机的很长的字符串,但是具体怎么做我就不知道了,我比较菜,希望各位大牛给个提示,或是相关资料.现在完全摸不到头脑.
[解决办法]
大牛就是大牛哈,高深。
俺的想法是这样啊,
假设你就一个一个地产生吧,就相当于每次在一个26元素的字典中随机取一个元素;
你要是想两个两个地产生呢,就得先把所有两个字母可能的序列都存在一个26*26=676个元素的字典里,每次随机取一个,就OK了。
仨仨地产生,就得弄一个17576个元素的字典;四个四个地产生,就得弄一个456976元素的字典;再多的就不废话了,只要内存允许,就可劲的造吧。
不成熟的想法,仅供参考哈。
[解决办法]
帮你顶下
[解决办法]
include<stdio.h> include<iostream> include<time.h> include<stdlib.h> include<string> using namespace std; string RandString(int n) { //参数n为字符串的最大长度 int i,j,m; string s; char temp; j = rand() % 2; for(i = rand() % n; i < n; i++) { if(j == 0) temp = 'a'; else temp = 'A'; m = rand() % 26; temp = temp + m; s = s + temp; } return s; } int main() { int max,n; cout<<"请输入产生的字符串的最大长度:"; cin>>max; cout<<endl<<"请输入要产生的字符串的个数:"; cin>>n; string s; srand((unsigned) time(NULL)); for(int i = 0; i < n; i++) { s = RandString(max); cout<<"随机产生的字符串为:"<<s<<endl; } system("pause"); return 0; }
[解决办法]
字典方法?是否这样:
1,hdrhdah
2,dfagdfhd
3,dfhhsj
4,dfgujhj
。。。。。。
N,sdahgfdf
for(int i=0;i<NUM;i++)
{
string+=rand()%N;
}
这样产生快了不?
[解决办法]
xuexi le
[解决办法]
rand()产生的不是伪随机数么?这样行么?