c++ 生成随机浮点数 (char * 的传递)

发表这篇文章的目的有两个

1. 生成随机浮点数

2. c++  char * 如何传递和赋值


下面是源码:

main.cpp

int _tmain(int argc, _TCHAR* argv[])
{
	GenerationRandomNumber generationAngle;

	int number = 120;

	char *g_char = (char *)malloc(sizeof(char)*1000);

	if (number > 0)
	{
		generationAngle.GenerationRandomAngle(&g_char,number);
	}

	std::cout <<"g_char : " << g_char<<std::endl;

	return 0;
}

GenerationRandomNumber.cpp

void GenerationRandomNumber::GenerationRandomAngle(char **g_chars,int number)
{
	std::vector <float> randAngle;   // 保存生成的随机角度,保留一位有效数字
	int * marking = new int[3600]();  // 标记那些角度已被使用

	srand(unsigned(time(NULL)));   // 随机种子初始化
	for (int i = 0; i < number; i++)
	{
		float angle = (float)(rand()%3600)/10.0f;   // 生成随机数

		//bool flag = this->JudgmentRandAngle(marking,angle,randAngle);   // 判断这个角度是否与周围相邻
		//if (flag)  // 相邻,此次计算作废
		//{
		//	i--;
		//}
	}
	
	std::sort(randAngle.begin(),randAngle.end());

	for (int i = 0; i < randAngle.size(); i++)
	{
		std:: cout <<i<<" -  "<<  randAngle[i] << std:: endl;
	}

	// 拼接字符串
	std::vector <float> ::iterator iter;
	std::string g_str;
	for (iter =randAngle.begin(); iter != randAngle.end() - 1;iter++)
	{
		std::stringstream ss;
		ss<< *iter;
		g_str += ss.str() + ",";
	}
	std::stringstream ss;
	ss<< randAngle.back();
	g_str += ss.str();

	//std::cout << g_str<<std::endl;

	strcpy(*g_chars,(char*)g_str.c_str());  // 转为 char*,

	delete[] marking;

	return ;
}

生成随机浮点数:

float angle = (float)(rand()%3600)/10.0f;   // 生成随机数
其中: 3600 是范围 (0-360)  ,  / 10.0f 是为了生成一位小数


char * 的赋值用到 strcpy ,  参数传递时候需要传递地址,实参中用二级指针

strcpy(*g_chars,(char*)g_str.c_str());  // 转为 char*,






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值