aihot  2017-04-27 09:49:19  OpenCV |   查看评论   
 
  •  
  • */  
  • //需要指定范围内的随机数,传统的方法是使用ANSI C的函数random(),然后格式化结果以便结果是落在  
  • //指定的范围内。但是,使用这个方法至少有两个缺点。做格式化时,结果常常是扭曲的,且只支持整型数。  
  • //C++中提供了更好的解决方法,那就是STL中的random_shuffle()算法。产生指定范围内的随机元素集的最佳方法  
  • //是创建一个顺序序列(也就是向量或者内置数组),在这个顺序序列中含有指定范围的所有值。  
  • //例如,如果你需要产生100个0-99之间的数,那么就创建一个向量并用100个按升序排列的数填充向量.  
  • //填充完向量之后,用random_shuffle()算法打乱元素排列顺序。  
  • //默认的random_shuffle中, 被操作序列的index 与 rand() % N 两个位置的值交换,来达到乱序的目的。  
  • //index_shuffle()用于产生指定范围[begin:end]的随机数,返回随机数数组  
  • vector<int> index_shuffle(int begin,int end){  
  •   vector<int> indexes(end-begin);  
  •   for (int i=begin;i<end;i++){  
  •     indexes[i]=i;  
  •   }  
  •   random_shuffle(indexes.begin(),indexes.end());  
  •   return indexes;  
  •  

    除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自TLD(Tracking-Learning-Detection)学习与源码理解之(四)

    留言与评论(共有 0 条评论)
       
    验证码:
    [lianlun]1[/lianlun]