百科问答小站 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; }      



  

相关话题

  如何理解互斥锁、条件锁、读写锁以及自旋锁? 
  哪些看似与图论无关的问题可用图论模型解决? 
  把windows平台下mfc框架的代码移植到linux对编程小白来说难度很大吗?应该学习什么内容呢? 
  有哪些IT人才懂的梗? 
  网上有对于C++编程要避免使用cin、cout、fstream;而是使用scanf、printf、FILE *的说法, 请问是正确的吗? 
  为什么在计算机科学领域及编程中不使用现代数学建立的符号体系进行操作? 
  卡尔曼滤波器是如何运用于多传感器融合的? 
  如何评价 Google 员工达漠称「生理性别差异导致了编程界员工性别比例差异」而被谷歌开除? 
  C++中key使用指针是否可以改变key指向的对象? 
  计算机领域有哪些「将错就错」被沿用至今? 

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





© 2025-01-18 - tinynew.org. All Rights Reserved.
© 2025-01-18 - tinynew.org. 保留所有权利