Chinaunix

标题: 我想能随机产生一个30-50个字符的自符串? [打印本页]

作者: jerryzheng    时间: 2004-06-11 22:32
标题: 我想能随机产生一个30-50个字符的自符串?
这个函数该怎么写,主要是怎么随机取字符?
作者: patrick007    时间: 2004-06-11 23:21
标题: 我想能随机产生一个30-50个字符的自符串?
我的想法是
做一个字符表(一二维都应该可以),然后先控制产生一个随即数(保证该数30到50之间,random(20)+30这样差不多可以吧),控制循环次数,在循环中从字符表里随机(也用随即数,并保证不会越界)读取
也可以不要字符表,在循环中控制一个随机数,产生ascii码,并保证在你需要的字符范围内(由于大小写和数字ascii不连续,可能有点难度)
应该还会有好些的方法,再想想
作者: kj501    时间: 2004-06-12 09:55
标题: 我想能随机产生一个30-50个字符的自符串?
写一个贴上来试试,肯定还有更好的算法:

  1. #include <stdio.h>;
  2. #include <stdlib.h>;

  3. void ran_str(int str_len)
  4. {
  5.         int i, r;
  6.         char *str = (char *)malloc(str_len + 1);
  7.        
  8.         srand(time(0));
  9.         for (i=0; i<str_len; i++) {
  10.        
  11.                 /* 产生一个0到51的随机数 */
  12.                 r = (int)(52.0 * rand() / (RAND_MAX + 1.0));
  13.                
  14.                 /* 如果这个随机数大于25,则用它生成大写字母,反之,则生成小写字母 */
  15.                 if (r >; 25)               
  16.                         *(str + i) = r / 2 + 'A';               
  17.                 else
  18.                         *(str + i) = r / 2 + 'a';               
  19.         }
  20.         *(str + i) = '\0';
  21.         printf("%s\n", str);
  22.         free(str);
  23. }

  24. int main()
  25. {
  26.         //产生一个长度为35的随机字符串
  27.         ran_str(35);
  28. }
复制代码

作者: JohnBull    时间: 2004-06-13 00:16
标题: 我想能随机产生一个30-50个字符的自符串?
读取/dev/urandom文件,截成7bit.
作者: oustar    时间: 2004-06-13 17:44
标题: 我想能随机产生一个30-50个字符的自符串?
还要看你对随机性的要求.random()产生的是伪随机数.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2