添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
霸气的小熊猫  ·  Stata | Features·  昨天    · 
有腹肌的竹笋  ·  Changing String ...·  昨天    · 
一身肌肉的麦片  ·  Wifi 6 光猫 Gpon ONU ...·  3 周前    · 
干练的围巾  ·  SetCellValue(visibleIn ...·  2 月前    · 
坏坏的蟠桃  ·  先锋归来 ...·  2 月前    · 
率性的蚂蚁  ·  Java ...·  3 月前    · 

C、C++中直接产生随机的字符串的库函数目前是没有的,我们可以自己写一个,

第一种实现思路-随机数转char

  1. 产生固定长度的随机的字符串
    主要就是产生固定个数的随机字符,
    那么就简单了,用两组随机数:
    一组:随机产生0~25的整数num,然后用’a’+num来赋值小写字母,‘A’+num来赋值大写字母
    一组:随机产生0,1,产生0,就生成小写字母;产生1,就生成大写字母;

  2. 产生不固定长度的随机的字符串
    就是在上面的产生固定长度的随机的字符串的基础上,在引入一组随机数,来控制字符串长度

C语言中没有关于字符串的定义,在C中要定义字符串必须使用数组或者指针,如 char a[10]; 或者 char *a = “sfg” 。所以,分别以 char 数组和 char* 各自做一遍。

第二种思路-随机数取字符

生成指定长度的字符串,还有一种简单暴力的方法。构造一个包含需要的字符的字符数组或者是字符串。通过生成其个数之内的随机数,决定将哪一个字符附加到字符串末尾。

这种方式,只需要一个随机数就可以了。如果要生成随机长度的字符串,再加一个随机数就可以了。

C语言,使用char数组

实现代码:

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//C使用char数组方式生成指定长度随机字符串 
void generCharArray(int len)
	int flag,i;
	char ch[len+1]={NULL};//注意要多分配一个字节来保存字符串最后的结束符
	srand((unsigned)time(NULL));
	for(i=0;i<len;i++)
		flag=rand()%2;
		if(flag) ch[i]='A'+rand()%26;
		else ch[i]='a'+rand()%26;
	ch[i]='\0';
	printf("生成的%d个字符长度随机数字符串\n",len); 
	printf("%s\n",ch);
	//return ch;
int main()
	generCharArray(10);
	getch();
	return 0;

运行截图:
在这里插入图片描述

C语言,使用char*

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//C使用char*方式生成指定长度随机字符串 
void generString(int len)
	char* string = new char[len+1];//注意要多分配一个字节来保存字符串最后的结束符
	int flag,j;
	srand((unsigned)time(NULL));
	for(j=0;j<len;j++)
		flag=rand()%2;
		if(flag) string[j]='A'+rand()%26;
		else string[j]='a'+rand()%26;
	string[j]='\0';
	printf("生成的%d个字符长度随机数字符串\n",len); 
	printf(string);
	//return string;
int main()
	generString(10);
	getch();
	return 0;

要注意new后面的符号

  • (): 分配这种类型的一个大小的内存空间,并以括号中的值来初始化这个变量
  • []: 分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量

创建char* 变量,如果用char *p=new char("absd"); 是分配一个char(1字节)的空间,用"absd"来初始化。
应该使用char *p=new char[6];方式。
注意这里new时要多分配一个字节来保存字符串最后的结束符(\0)。

运行截图:
在这里插入图片描述

C++ 使用string类

在C++中有一种更简单的方法,那就是string类, 可直接定义字符串, 例如string s(“sdgfhl”); 而且有一个好处是字符串的长度是可变的。

#include<cstdio>
#include<time.h>
#include<stdlib.h>
#include <string>
#include<iostream>>
using namespace std;
//C++方式生成指定长度随机字符串 
string gengerString(int n){
	srand((unsigned)time(NULL));                        //产生随机化种子
	printf("生成%d个字符的字符串\n",n);                                      
	std::string str = "";
	for(int i=1;i <= n;i++)
		int flag;                        
		flag = rand()%2;                     //随机使flag为1或0,为1就是大写,为0就是小写 
		if(flag == 1)                        //如果flag=1 
			str += rand()%('Z'-'A'+1)+'A';       //追加大写字母的ascii码 
			str += rand()%('z'-'a'+1)+'a';       //如果flag=0,追加为小写字母的ascii码 
	cout<<str<<endl;                //将字符串输出 
	return str;
int main()
	gengerString(10);
	return 0;

运行截图:
在这里插入图片描述

Java通过字符数组或字符串方式

生成指定长度的字符串,还有一种简单暴力的方法。构造一个包含需要的字符的字符数组或者是字符串。通过生成其个数之内的随机数,决定将哪一个字符附加到字符串末尾。

这种方式,只需要一个随机数就可以了。如果要生成随机长度的字符串,再加一个随机数就可以了。

如果需要生成只有包含大小写英文字符的字符串,就是52位,如果要加上数字0-9的话就是62位。如果需要生成包含其他指定字符的字符串,只需要改一下str字符串,把需要的字符写入就好了。
需要生成包含那些字符的字符串,直接修改str就好了。

实现代码:

//生成指定长度字符串
    public static String generString(int len){
        /**生成指定长度的随机字符串
        //定义一个字符串(A-Z,a-z)即52位;
        String str="zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM";
        int strLen = str.length();
        //由Random生成随机数
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for(int i=0; i<  len; i++){
            //产生0-strLen的数字
            int number = random.nextInt(strLen);
            //将产生的数字通过len次附加到sb中
            sb.append(str.charAt(number));
        //将StringBuffer类字符串转换成字符串
        return sb.toString();

运行截图:

—END–

本文分享了C语言/C++如何生成随机数的具体实现方法,供大家参考,具体内容如下 C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。 (1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。 #include #include void main() for(int i=0;i< 1. 基本函数在C语言中取随机数所需要的函数是:intrand(void);voidsrand(unsignedintn);rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件:#include2.使用方法rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。RAND_MAX常量被定义在stdlib.h头文件中。其... C++ 生成随机字符串 这个需求也是最近一个项目里的实际需求。测试一个数据库相关的代码。要往数据库里随机的填写一些字段。 从原理上是很容易实现。建立一个数组,存放一些字符。然后随机的从里面取一些字符凑成一个字符串。 所以这个代码没啥可说的。里面用到了 std::random_device,std::mt19937 ,std::uniform_int_distribution 可以作为 C++ 生成随机数的一个例子。还用到了初始化列表来初始化一个 QVector , 这个也可以作为一个例子。 最近给自己的网站搞一个相册,随机生成图片名字,生成100W个16位的名字,测试没重复,感觉还不错,生成的数字是均匀分布的cppreference #include <random> #include <iostream> #include <unistd.h> #include <unordered_set> using namespace std; char seed[64] = { '0','1','2','3','4','5','6','7','   首先,我们知道可以使用随机函数随机生成自然数,整数,小数,负数等常见的数据类型,那怎么使用它生成包含26个英文字母大小写的字符串呢?  其实,这很简单,程序也很朴素。  每一个字符都对应了它的ascii码,而ascii码则是整数,所以我们可以通过得到字符的ascii码,将它转换成字符就行了。程序如下:#include&lt;cstdio&gt; #include&lt;time.h&gt; 今天发现一个以前写的生成指定长度随机字符串的函数,在连续调用时会返回相同的字符串,发现是以time(NULL)作为随机种子,于是做了下改进。 将种子改为当前秒数和微秒的和,这样就可以保证连续请求(us等级)多次不会导致生成相同的字符序列。 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/time.h> int get_random_str(char Linux平台利用dev/urandom来生成随机数,再转成字符串,以下代码生成字符串长度为两倍len. dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流。很多解密程序与安全应用程序(如SSH Keys,SSL Keys等)需要它们提供的随机数据流。 #include"log_uuid.h" #include <stdlib.h> #include <unistd.h> #include&lt 转自:c++ 随机生成字符串有数字和字母组成 这里的每个数字被选取的几率大于每个字母被选取的几率,但小写字母、大写字母、数字三类的几率一样, 要改善这个问题我觉得可以开一个62大小的字符数组,然后随机数直接mod62填写该下标对应的字符 #include <iostream> #include <stdlib.h> #include <t... 写入自定义字母:string ranstr = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890"printf(str.c_str());//用c_str是转换string用的,printf的参数是const char类型。先加载库:string.h、Windows.h、iostream。之后重新定义一个空字符串:string str = "";i<输出字符串长度;//62是ranstr的长度