使用random_shuffle()算法随机化序列元素

使用random_shuffle()算法随机化序列元素     以前只知道产生随机数用rand()。今天在修改别人程序时无意看到这么一个函数 random_shuffle(()。上网一查原来还可以这么产生随机数列。采用rand()产生一定范围内的随机数是并不是绝对的平均,可能有些数多有些shus产生指定范围内的随机元素集的最佳方法是创建一个顺序序列(也就是向量或者内置数组),在这个顺序序列中含有指定范围的所有值。例如,如何你需要产生100个0-99

使用random_shuffle()算法随机化序列元素

      以前只知道产生随机数用rand()。今天在修改别人程序时无意看到这么一个函数 random_shuffle(()。上网一查原来还可以这么产生随机数列。采用rand()产生一定范围内的随机数是并不是绝对的平均,可能有些数多有些shus产生指定范围内的随机元素集的最佳方法是创建一个顺序序列(也就是向量或者内置数组),在这个顺序序列中含有指定范围的所有值。例如,如何你需要产生100个0-99之间的数,那么就创建一个向量并用100个按升序排列的数填充向量.
 std::vector<int> vectorList;
 for (int i=0; i<10; i++)
 {

  vectorList.push_back(i);
 }

    填充完向量之后,用random_shuffle()算法打乱元素排列顺序。random_shuffle()定义在标准的头文件<algorithm.h>中。random_shuffle()有两个参数,第一个参数是指向序列首元素的迭代器,第二个参数则指向序列最后一个元素的下一个位置。
 random_shuffle(vectorList.begin(), vectorList.end());

对于数组也可以采用这种方法:
 
int a[10];
 for (int i=0; i<10; i++)
 {

  a[i] = i;
 }
 random_shuffle(a, a+10);

 for (int i=0; i<10;i++)
 {

  cout<<a[i];
 }

注意: 

1、是个完全通用的算法-适用于内建的数据类型和用户自定义类型。
 2、必须是向量或数组,不能使list等序列。说明此函数可能是对连续内存进行的随机排序(猜测),
  所以内存不连续的不行。
 

今天的文章使用random_shuffle()算法随机化序列元素分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33139.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注