国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++編寫生成不重復的隨機數代碼

2020-01-26 15:06:54
字體:
來源:轉載
供稿:網友

C++編寫生成不重復的隨機數代碼

vector<int> getRandom(int total){  srand((int)time(NULL));  std::vector<int> input = *new std::vector<int>();  for (int i = 0; i < total; i++) {    input.push_back(i);  }  vector<int> output = *new vector<int>();     int end = total;  for (int i = 0; i < total; i++) {    vector<int>::iterator iter = input.begin();    int num = random()%end;    iter = iter+num;    output.push_back(*iter);    input.erase(iter);    end--;  }     return output;}

再來一例:

void permutation(int n, int *z_array){  int i, j, k, z;  int buffer[N];  /* 初始化數組 */  for (i=0; i<n; i++)    buffer[i]=0;  /* 準備生成隨機數,以當前時間為種子 */  srand((unsigned)time((long *)0));  /* 獲得不重復的隨機數據 */  for (i=0; i<n; i++) {    /* 獲得0~(n-i)的隨機數據 */    z = rand()%(n-i);    j=0; k=0;    while (j<=z) {      if (buffer[j+k]==0) j++;      else k++;    }    buffer[j+k-1]=1;    z_array[i]=j+k-1;  }  return;}

方法三:來個復雜點的

#include<stdio.h>#include <time.h>#include "iostream"#include <math.h>#define N 53using namespace std;//print arrayvoid display(int *a){    for (int i =0;i<N;i++)    {      cout<<" "<<a[i]<<" ";    }}int main(void){  int b[N],a[N];  for (int i =0;i<N;i++)  {    b[i] = i+1;  }  // random(a);  srand((unsigned)time(NULL));  int MaxIndex = N;  for ( i= 0;i<N;i++)  {  //     int index = (int)rand()%MaxIndex;//隨機一個 0 - 52的index    a[i] = b[index];    //隨機到的數字給a[i],i from 0 to N-1    b[index] = b[MaxIndex-1];    MaxIndex--;  }    display(a);  return 0;} 

以上3種方法均可實現生成不重復的隨機數,具體的效率如何,小伙伴們自己測試下吧。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潼南县| 吴堡县| 胶南市| 唐海县| 白玉县| 江阴市| 科尔| 会理县| 集安市| 大理市| 合阳县| 奉新县| 上饶市| 双峰县| 唐河县| 揭阳市| 甘德县| 广东省| 新蔡县| 万安县| 商城县| 合阳县| 博乐市| 那坡县| 铁岭市| 巫山县| 崇信县| 凤城市| 从江县| 仁布县| 鲁山县| 华蓥市| 孝感市| 永嘉县| 宁波市| 青铜峡市| 万源市| 基隆市| 巴彦淖尔市| 江都市| 潢川县|