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



  

相关话题

  公民身份号码有可能是素数吗? 
  为什么祖传代码被称为「屎山」? 
  外国人编程出错也会出现「烫烫烫烫」吗?为什么会出现这个? 
  喜欢编程而又干着程序员的工作是一种什么样的体验? 
  如何不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标? 
  如何评价 2021 年 ICPC 银川赛区? 
  救救编程小白,请告诉我如何学编程?怎么入门啊? 
  &&-||能完全代替所有可以使用if-else的情况吗? 
  朋友自杀前把名字改成了nullptr,是什么意思? 
  是否存在一个函数,使得它的逆运算是容易求的,而它的逆运算的逆运算是难求的? 

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





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