,,C++ random_shuffle()方法案例详解

,,C++ random_shuffle()方法案例详解

本文主要介绍C random_shuffle()方法的详细说明。本文通过一个简单的案例,说明了对这项技术的理解和使用。以下是详细内容,有需要的朋友可以参考一下。

假设你需要一个指定范围内的随机数。传统的方法是使用ANSI C的函数random(),然后将结果格式化,使其落在指定的范围内。然而,使用这种方法至少有两个缺点。

首先,在格式化时,结果往往是失真的,因此无法获得正确的随机数(例如,某些数字出现的频率比其他数字高)。

其次,random()只支持整数;不能用它在数据库中生成随机字符、浮点数、字符串或记录。

对于以上两个问题,C提供了一个比较好的解决方案,就是random_shuffle()算法。别担心,我会告诉你如何用这个算法生成不同类型的随机数。

在指定范围内生成一组随机元素的最佳方法是创建一个顺序序列(即向量或内置数组),它包含指定范围内的所有值。例如,如果您需要生成0到99之间的100个数字,那么创建一个向量,并以升序用100个数字填充它。

#包含矢量

使用STD:vector;

int main()

{

向量VI;

for(int I=0;i 10我)

六、push_back(一);

/*现在,向量包含100个从0到99的升序整数*/

}

填充向量后,使用random_shuffle()算法对元素进行加扰。Random_shuffle()是在标准头文件中定义的。因为所有的STL算法都是在名称空间std:)中声明的,所以应该注意正确声明数据类型。Random_shuffle()有两个参数。第一个参数是指向序列第一个元素的迭代器,第二个参数指向序列最后一个元素的下一个位置。以下代码片段使用random_shuffle()算法对先前填充到vector中的元素进行加扰:

包括算法

使用STD:random _ shuffle;

random_shuffle(vi.begin()、VI . end());/*加扰元素*/

如果要检查已加扰的元素,可以通过以下方式查看它们在加扰后的存储顺序:

for(int I=0;i 100我)

cout VI[I];/*无序显示元素*/

Random_shuffle()是一个完全通用的算法——适用于内置数据类型和用户定义的类型。下面的示例创建了一个包含7个string对象的vector,其中包含一周中的各天,并使用random_shuffle()来打乱它们的顺序:

#包含字符串

#包含矢量

#包含算法

#包括iostream

使用命名空间std

int main()

{

向量vs;

vs . push _ back(string(' Sunday '));

vs.push_back (string('周一'));

.

vs.push_back (string('星期六'));

random_shuffle(vs.begin()、vs . end());/*出现故障*/

for(int I=0;I 7;我)

cout vs[I];/*无序显示元素*/

}

如何使用random_shuffle()处理内置数组?当使用容器而不是内置数组时,你没有任何负担。所有的STL算法不仅适用于容器,也适用于序列。因此,您还可以将random_shuffle()算法应用于内置数组。请注意,random_shuffle()的第二个参数指向数组上限中的下一个元素位置:

char carr[4]={'a ',' b ',' c ',' d ' };

/*carr 4指向数组上限中的下一个元素位置*/

random_shuffle(carr,carr 4);

for(int I=0;I 4;我)

cout carr[I];/*无序显示元素*/

本文关于random _ shuffle()方法案例的详细说明到此为止。有关random _ shuffle()方法的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • vs2015打包安装程序,vs2015程序打包,VS2022实现VC++打包生成安装文件图文详细历程
  • vc++6.0的快捷键,vc 快捷键
  • vc++6.0的快捷键,vc 快捷键,VC6.0常用快捷键大全
  • 绘制圆角矩形的方法,c++ 画矩形,C#画圆角矩形的方法
  • 懒汉式和饿汉式代码,单列模式懒汉和饿汉,C++单例模式的懒汉模式和饿汉模式详解
  • 好用的C++编译器,c++编译软件哪个好
  • semaphore c#,c++ semaphore
  • semaphore c#,c++ semaphore,C++中Semaphore内核对象用法实例
  • dev-c++使用教程,dev c++安装教程
  • dev-c++使用教程,dev c++安装教程,Dev C++ 安装及使用方法(图文教程)
  • C里面指针常量和常量指针的区别,c++指针常量和常量指针
  • C里面指针常量和常量指针的区别,c++指针常量和常量指针,简单总结C++中指针常量与常量指针的区别
  • com组件初始化失败,c#开发com组件,C++中COM组件初始化方法实例分析
  • c++静态成员变量使用,c++静态成员函数和静态成员变量
  • c++静态成员变量使用,c++静态成员函数和静态成员变量,详解c++ 静态成员变量
  • 留言与评论(共有 条评论)
       
    验证码: