百科问答小站 logo
百科问答小站 font logo



c++怎么在1到n这些数中随机产生k(k<n)个?当然,k个数互不相等。有什么比较好的写法吗? 第1页

  

user avatar   lz1996 网友的相关建议: 
      

传统的rand()%pool_size方法在一般情况下可以采用,但是实际上这样产生的随机数分布不是完全均匀的。如果对随机数要求较高的话,建议采用下列方法:

       #include <random> #include <iostream>  const int n=10000; const int k=1000; bool taken[n]; int result[k];  int main() {     std::random_device rd;     std::mt19937 gen(rd());     std::uniform_int_distribution<> dis(1, n);      for(int count=0; count<k; ++count)     {         int tmpResult = dis(gen);         while (taken[tmpResult])         {             tmpResult = dis(gen);         }         result[count] = tmpResult;         taken[tmpResult] = true;     }      for(int count=0; count<k; ++count)         std::cout<<result[count]<<std::endl; }      



  

相关话题

  请问c++中到底存不存在对指针类型的判断? 
  如何看待关于“数据结构与算法基础”的重要性? 
  大一计算机专业怎么利用好寒假? 
  如果想大体地了解凸优化和非凸优化中比较重要的概念、理论知识和算法应该看哪些书籍或者论文? 
  美团公开外卖订单分配算法,详解算法如何判断一个骑手的时间宽裕程度和顺路程度,有哪些值得关注的信息? 
  大家做课题做项目进行科学研究的过程中编程产生的结果(数字,图像,表格等)都是暂时保存在哪里呢? 
  为什么leetcode等OJ上Cpp的提交都以class solution而不是main函数作为入口? 
  量子计算机的出现会给实际生活带来怎样的改变? 
  为什么 C++ 能够源码级兼容C语言? 
  强类型语言的优缺点是什么? 

前一个讨论
常听到这洗脑那洗脑到底什么是洗脑?又是怎样洗脑?
下一个讨论
如何评价「六小龄童节目被春晚毙掉」这一传言?





© 2024-11-08 - tinynew.org. All Rights Reserved.
© 2024-11-08 - tinynew.org. 保留所有权利